1

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

4

1 回答 1

5

你误解了对象。

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

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

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

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

于 2013-07-08T19:41:37.603 回答