我使用document.getElementsByTagName
获取页面中的所有图像,并将数组存储在名为imgs
的变量中。然后,每次我使用document.createElement
和document.appendChild
创建新的图片代码并将其附加到文档时,变量imgs
的内容都会动态更改,这意味着它将包含新的添加图像标记。根据我的理解,我之前已经将内容保存在变量imgs
中,所以它应该一直保持不变。例如。如果我将imgs
的长度保存在另一个名为imgsLength
的变量中,即使我动态地向文档添加另一个img标记,它也不会改变。所以我对imgs
和imgsLength
之间的这种不一致感到有点困惑。
答案 0 :(得分:5)
你误解了对象。
getElementsByTagName()
返回一个NodeList对象,其中包含匹配元素的实时视图
该对象是 mutable ;它会随着DOM突变而发生变化。
var img = getElementsByTagName()
创建一个引用此同一对象的变量。它不会复制任何东西。
imgs.length
返回表示NodeList当前长度的不可变数字。
var imgLength = imgs.length
创建一个引用此不可变数字的变量
当NodeList发生变化时,imgs.length
将引用不同的数字;这不会影响引用其先前值的变量。