为什么存在 document.getElementById() 函数? [复制]

2024-03-27

创建网页时我一直使用函数

var someVariable = document.getElementById('myID');

获取对元素对象的引用。最近有人建议我这是没有必要的,因为已经有这样一个变量了。它的名称等于 id。我已经测试过了,它似乎有效。

<div id="myID">some text</div>
<a href="someplace" onclick="alert(myID.innerHTML)">click here</a>

此代码有效,并且它会按预期提醒“某些文本”。 Firefox 错误控制台中只有一条警告:

全局范围内 ID/NAME 引用的元素。使用 WC3 标准 document.getElementById() 代替......

我现在主要使用 jQuery,但我需要向工作中的老板证明这一点,否则我将不得不给他买一盒巧克力:-)。

任何想法为什么上面的代码不应该工作或者为什么使用它是一个非常错误的想法(Firefox 中的警告是不够的)???

感谢您的回答


任何想法为什么上面的代码不应该工作或者为什么使用它是一个非常错误的想法(Firefox 中的警告是不够的)???

因为它是非标准的(但不长久 http://dev.w3.org/html5/spec/Overview.html#named-access-on-the-window-object)。虽然some浏览器确实会将带有 ID 的元素分配给全局变量,但它们没有义务这样做(并非所有浏览器都这样做)。例如,旧版本的 Firefox 不会表现出这种行为。还有以下风险命名冲突.

Using document.getElementById()确保所有浏览器的行为完全相同(嗯,或多或少cough) 获取元素的句柄时。

See 博宾斯的出色回答 https://stackoverflow.com/questions/3434278/ie-chrome-are-dom-tree-elements-global-variables-here/3434388#3434388到类似的问题以获取更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么存在 document.getElementById() 函数? [复制] 的相关文章

随机推荐