繁体   English   中英

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

[英]JavaScript global variable not visible inside function

我正在尝试为我的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;
    }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM