JavaScript全局变量在函数内部不可见

时间:2018-10-30 20:29:27

标签: javascript global-variables

我正在尝试为我的js及其下面的代码使用全局变量

var fullName = document.getElementById("elementId").value;
var nameFormat = /^[A-Za-zÀ-ú]+ [A-Za-zÀ-ú]+$/;

但是当我尝试在函数内部使用它时,它就无法工作。所以我只是将var fullName粘贴到函数中,然后它就可以工作了。因此,请告诉我我可以通过 document.getElementById(“ elementId”)。value; 将值分配给全局变量吗? 当我尝试在函数内部使用nameFormat时,可​​以在内部或外部进行声明。 这是完整的代码

//common js regular expressions
var emailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
var nameFormat = /^[A-Za-zÀ-ú]+ [A-Za-zÀ-ú]+$/;

//global variables
var fullName = document.getElementById("jsname").value;
var email = document.getElementById("jsun").value;

function validateForm() {

    //var fullName = document.getElementById("jsname").value;

    //onsubmit full name validation

    if (!(fullName.match(nameFormat))) {
        document.getElementById("pidnamevalidate").innerHTML = "Name should be in a valid format";
        document.getElementById("pidnamevalidate").style.color = 'green';
        return false;

        //onsubmit email validation

    } else {
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

“ nameFormat”可以是全局变量,这很好,但是看起来您正在从可编辑的表单字段中获取fullName。如果您在validateForm函数之外设置fullName,则将其设置为字段的初始值(或如@RobG所述,可能试图获取DOM中尚不存在的元素的值,这将导致一个错误)。在validateForm中设置fullName将在我认为是您想要的时间点获得其值。

相关问题