打印

SD9002: IE6 IE7 IE8(Q) 中的 getElementById 方法的参数不区分大小写

作者:蔡美纯 孙东国

标准参考

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 值完全一致。

参见

知识库

相关问题

测试环境

操作系统版本: Windows 7 Ultimate build 7600
浏览器版本: IE6
IE7
IE8
Firefox 3.6
Chrome 4.0.302.3 dev
Safari 4.0.4
Opera 10.51
测试页面: ...
本文更新时间: 2010-07-09

关键字

getElementById id case 大小写