JavaScript-无法获取属性';价值';指未定义的或空的引用

JavaScript-无法获取属性';价值';指未定义的或空的引用,javascript,Javascript,以下代码针对第一个控件运行,尽管完全相同,但针对第二个控件失败: if (document.getElementById("employeeID").value == "") { document.getElementById("lblEmp").textContent = "Employee Name is required"; ret = false; } else { document.getElementById("lblEmp").textContent = "

以下代码针对第一个控件运行,尽管完全相同,但针对第二个控件失败:

if (document.getElementById("employeeID").value == "") {
    document.getElementById("lblEmp").textContent = "Employee Name is required";
    ret = false;
} else {
    document.getElementById("lblEmp").textContent = "";
}

if (document.getElementById("grossSalary").value == "") {
    document.getElementById("lblGrossSalary").textContent = "Gross Salary is required";
    ret = false;
} else  {
    document.getElementById('#lblGrossSalary').textContent = "";
}
代码在employeeID控件中按预期工作,但在grossalary控件上抛出主题错误

剃刀:


@LabelFor(model=>model.employeeID,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.employeeID,new{htmlAttributes=new{@class=“form control”}})
@Html.ValidationMessageFor(model=>model.employeeID,“,new{@class=“text danger”})
@LabelFor(model=>model.grossalary,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.grossalary,new{htmlAttributes=new{@class=“form control”}})
应该是

document.getElementById('lblGrossSalary').textContent = "";
而不是

document.getElementById('#lblGrossSalary').textContent = "";

在上一个else块中

看起来问题可能如下:

else {
     document.getElementById('#lblGrossSalary').textContent = "";
 }
('lblgrossalary')
更改为
('lblgrossalary')

您只能在对象上使用点(.)运算符,因此如果它未定义或为null,并且需要“.value”,您将得到一个错误

我重新编写了您的代码,但这应该适合您!它也更干净:)


什么是
@Html.LabelFor
?这看起来不仅仅是JavaScript和HTML。还有
document.getElementById(“Grossalary”).value
没有名为“Grossalary”的ID,该ID的名称是“lblgrossalary”
else {
     document.getElementById('#lblGrossSalary').textContent = "";
 }
// first save the everything in a variable for later
// if the element with a given id doen't exist the "|| false" will turn it into a boolean false
var employeeID = document.getElementById("employeeID") || false;
var lblEmp = document.getElementById("lblEmp") || false;
var grossSalary = document.getElementById("grossSalary") || false;
var lblGrossSalary = document.getElementById("lblGrossSalary") || false;


// before accessing the .value check if its not false
if (employeeID && employeeID.value == "") {
    lblEmp.textContent = "Employee Name is required";
    ret = false;
}
else {
    lblEmp.textContent = "";
     }
if (grossSalary && grossSalary.value == "") {
    lblGrossSalary.textContent = "Gross Salary is required";
    ret = false;
}
else {
    lblGrossSalary.textContent = "";
}