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