IE8 getElementById怪癖模式

时间:2013-03-15 20:57:51

标签: javascript internet-explorer-8 quirks-mode

我在我的JSP中定义了这个函数:

function addcolor(){
    alert("found " + document.getElementById("clrCd").value);
}

我的HTML(来自struts 1.3 app)

<input type="text" name="clrCd" maxlength="2" size="2" value="">
<input type="button" name="add" value="ADD" onclick="addcolor()">

当我的浏览器处于怪癖模式时,我点击了ADD按钮,我得到了带有文本输入值的警报

如果我将浏览器置于IE8标准模式(通过F12控制台)并运行相同的代码,我得到:

  

错误:无法获取属性“value”的值:object为null或   未定义

为什么到底发生这种情况......我已经失去了整整一天的时间来处理IE,所有这些都是胡说八道。

这是一个遗留应用程序,我真的无法改变太多,但我真的想让它们脱离怪异模式,这样我们就可以开始使用一些HTML5功能,如bootstrap和angularJS。

任何想法?

杰森

2 个答案:

答案 0 :(得分:1)

这不是“IE废话”,而是您没有任何ID clrCd的元素。您只设置了name属性。

为您的元素添加id="clrCd",您将获得更多运气。

答案 1 :(得分:0)

实际上你可以在IE7之前做到这一点 见文件

http://msdn.microsoft.com/en-us/library/ie/ms536437(v=vs.85).aspx

Windows Internet Explorer 8及更高版本。在IE8标准模式下,getElementById仅对ID属性执行区分大小写的匹配。在IE7标准模式和以前的模式中,此方法对ID和NAME属性执行不区分大小写的匹配