if ((document.getElementById('rank').value != '01') && (document.getElementById('rank').value != '04') && (document.getElementById('CkbxSecondeePartner').checked)) {
alert('The rank of the employee is not at the Partner level. Only Active Partners can be on secondment');
divObj.style.display = 'none'; //hides
document.getElementById('CkbxSecondeePartner').checked = false;
}
错误显示在:
((document.getElementById('rank').value != '01') can not read property 'value' of null)
答案 0 :(得分:1)
IE有一个bug,其getElementById(id)
实现(only fixed if you are running in standards mode)。
在IE中,getElementById(id)
实际上将返回具有匹配name
属性的元素,即使这是完全无效的匹配。 (再次,如果没有在标准模式下运行)
因此,如果您正在测试的其中一个浏览器正在应用不同的呈现模式(代码可能以不同方式提供,或者您可能已经篡改了开发人员工具),您可能会看到不同的结果。
此外,如果您不确定是否匹配,请务必先测试该元素。
var rankField = document.getElementById('rank');
if(rankField && rankField.value != '01'){
//...
}
答案 1 :(得分:0)
我建议您在尝试访问其属性之前验证您的元素:
if (document.getElementById('rank') && document.getElementById('CkbxSecondeePartner')) {
if ((document.getElementById('rank').value != '01') && (document.getElementById('rank').value != '04') && (document.getElementById('CkbxSecondeePartner').checked)) {
alert('The rank of the employee is not at the Partner level. Only Active Partners can be on secondment');
divObj.style.display = 'none'; //hides
document.getElementById('CkbxSecondeePartner').checked = false;
}
}
答案 2 :(得分:0)
希望没有人对IE11的问题作出回应。相同的脚本适用于IE 8或9,但不适用于IE11。在大多数页面中使用javascripts的遗留应用程序的问题都有问题。
而不是 (document.getElementById('rank')。value!='01')使用 (document.getElementById('rank')!='01')
这可以解决你的问题。
实际问题是,我们无法对包含300万行代码的旧系统进行此更改,我们无法在任何地方进行此更改