在IE11中出现Java脚本错误,但在IE9中运行正常

Java script error in IE11 but in IE9 working properly

本文关键字:IE9 但在 运行 脚本错误 IE11 Java      更新时间:2023-09-26
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万行代码对旧系统做这个改变,我们不能到处做这个改变

相关文章: