我使用 document.getElementsByTagName
获取页面中的所有图像并将数组存储在名为 imgs
的变量中.然后每次我使用document.createElement
和 document.appendChild
创建一个新的图像标签并将其附加到文档中,变量的内容 imgs
会动态变化,这意味着它将包含新添加的图像标签。按照我的理解,我已经把内容保存在变量imgs
中了之前,所以它应该一直保持不变。例如。如果我保存 imgs
的长度在另一个名为 imgsLength
的变量中,即使我向文档动态添加另一个 img 标签,它也不会改变。所以我对 imgs
之间的这种不一致感到有点困惑。和 imgsLength
.
最佳答案
你误解了对象。
getElementsByTagName()
返回一个 NodeList 对象,其中包含匹配元素的实时 View 。
这个对象是可变的;它会响应 DOM 突变而改变。
var img = getElementsByTagName()
创建一个引用同一对象的变量。它不复制任何内容。
imgs.length
返回表示 NodeList 当前长度的不可变数字。
var imgLength = imgs.length
创建一个引用这个不可变数字的变量。
当 NodeList 改变时,imgs.length
将引用不同的数字;这不会影响引用其先前值的变量。
关于javascript - document.getElementsByTagName() 会动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534593/