IE6 IE7 IE8(Q) 中的 getElementById 方法的参数不区分大小写
转载自
http://w3help.org/zh-cn/causes/SD9002
标准参考
getElementById 是 Document 接口提供的方法,用于获取一个元素,该方法传入的参数应该是目标元素的 id 属性的值:
Element getElementById(in DOMString elementId);
目标元素的 id 是一个大小写敏感的字符串,并且该 id 在文档内应该是唯一的。
关于 getElementById 方法的详细信息,请参考 DOM-1-HTML Interface HTMLDocument 及 DOM-2-Core Interface Document 中的相关内容。
关于元素的 id 属性的详细信息,请参考 HTML 4.01 规范 7.5.2 Element identifiers: the id and class attributes 中的内容。
问题描述
使用 document.getElementById 方法获取页面内的元素时,在 IE6 IE7 IE8(Q) 中的 id 是大小写不敏感的。
造成的影响
如果作为参数的 id 和目标元素的实际 id 的大小写不匹配,在某些浏览器中将无法获取该元素。
受影响的浏览器
IE6 IE7 IE8(Q) |
---|
问题分析
分析以下代码:
<body> <div id="Ab"></div> </body> <script type="text/javascript"> alert(document.getElementById("aB")); </script>
以上代码中,目标元素的 id 为 'Ab',但在传入 document.getElementById 时的参数为 'aB',在严格区分大小写的情况下,二者并不匹配。
在各浏览器输出如下:
IE6 IE7 IE8(Q) | 其他浏览器 |
---|---|
[object] | null |
可见:在 IE6 IE7 IE8(Q) 中,使用 document.getElementById 获取页面元素时,不区分参数的大小写。
另外,对于 IE 支持的以 documnt.all(id) 形式获取元素的方式,在 IE6 IE7 IE8(Q) 中也不区分参数的大小写。
解决方案
在使用 document.getElementById 获取页面元素时,应保证作为参数的 id 与目标元素的实际 id 值完全一致。