我在this SO前面提到的关于在document.getElementById
对IE6/7的滑稽行为(和Opera的一些版本)可以找到一个元素,其name
属性定义,但不是id
属性,使得的document.getElementById()返回一个元素与名称等于id指定
function f() {
document.getElementById("a1").value = ...;
}
...
<input name="a1" ...></input>
实际工作在这些版本。
通过我的克里斯·布鲁姆发现this bug report网,其中一个叫米洛范德Leij用户指出以下(由他this w3c spec简称)搜索:
为自己辩护:“ID和名称属性共享相同的名称空间。“
这是什么意思,ID和名称属性共享相同的名称空间?为什么这个条件足以让IE6/7/Opera在他们的JS引擎中实现这种行为?
如果你必须有一个复制为'name'的'id',你可以在'document.getElementById'处使用一个包装器并仔细检查它是否得到正确的元素。 –
@JeremyJStarcher - 但是'document.getElementById()'只返回一个元素,所以如果它没有返回正确的元素,那么你不能用它来检索你想要的元素,所以如果一个人被迫与一个已知的冲突,你可能不得不以不同方式检索元素。 – jfriend00
那个帮助我很多,非常感谢! – resilva87