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