document.getElementsByTagName()将动态更改

时间:2013-07-08 19:39:24

标签: javascript dom

我使用document.getElementsByTagName获取页面中的所有图像,并将数组存储在名为imgs的变量中。然后,每次我使用document.createElementdocument.appendChild创建新的图片代码并将其附加到文档时,变量imgs的内容都会动态更改,这意味着它将包含新的添加图像标记。根据我的理解,我之前已经将内容保存在变量imgs中,所以它应该一直保持不变。例如。如果我将imgs的长度保存在另一个名为imgsLength的变量中,即使我动态地向文档添加另一个img标记,它也不会改变。所以我对imgsimgsLength之间的这种不一致感到有点困惑。

1 个答案:

答案 0 :(得分:5)

你误解了对象。

getElementsByTagName()返回一个NodeList对象,其中包含匹配元素的实时视图 该对象是 mutable ;它会随着DOM突变而发生变化。

var img = getElementsByTagName()创建一个引用此同一对象的变量。它不会复制任何东西。

imgs.length返回表示NodeList当前长度的不可变数字。

var imgLength = imgs.length创建一个引用此不可变数字的变量 当NodeList发生变化时,imgs.length将引用不同的数字;这不会影响引用其先前值的变量。