document.getElementById是否返回一个live dom元素?

时间:2013-10-02 19:21:54

标签: javascript

JavaScript中的document.getElementById是否会返回实时DOM元素?我有兴趣知道性能原因

1 个答案:

答案 0 :(得分:12)

标准和“实时”之间的区别通常用于元素的列表document.getElementById返回对DOM节点的单个对象引用。获取节点后,引用将始终指向同一节点。

示例的 HTML:
<div id="foo"></div>
JS的例子:
var foo,
    bar;
foo = document.getElementById('foo'); //gets the div
bar = document.getElementById('bar'); //null
foo.setAttribute('id', 'bar');
console.log(foo.id); //'bar'
console.log(bar.id); //TypeError

引用不会因为元素的ID可能已更改而得到更新。

这与document.getElementsByTagName之类的东西相反,后者返回带有给定标记的元素列表。将元素添加到DOM或从DOM中删除元素时,列表将自动更新。