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)
IE有一个getElementById(id)
实现的bug(只有在标准模式下运行时才会修复)。
在IE中,getElementById(id)
实际上将返回一个具有匹配name
属性的元素,即使这是一个完全无效的匹配。(同样,如果不是在标准模式下运行)
因此,如果你测试的其中一个浏览器应用了不同的呈现模式(代码可能被提供了不同的服务,或者你可能篡改了开发人员工具),你可能会看到不同的结果。
如果你不确定是否有匹配,一定要先测试元素。
var rankField = document.getElementById('rank');
if(rankField && rankField.value != '01'){
//...
}
我建议您在尝试访问其属性之前验证您的元素:
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;
}
}
希望没有人响应IE11的问题。相同的脚本可以在ie8或ie9中正常工作,但在IE11中不行。在大多数页面中使用javascript的遗留应用程序存在问题。
代替(. getelementbyid(等级)。= '01')
使用(document.getElementById('rank') != '01')
这应该能解决你的问题。
实际的问题是,我们不能用300万行代码对旧系统做这个改变,我们不能到处做这个改变