javascript - document.getElementsByTagName() 会动态变化

标签 javascript dom

我使用 document.getElementsByTagName获取页面中的所有图像并将数组存储在名为 imgs 的变量中.然后每次我使用document.createElementdocument.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/

相关文章:

php - 将 PHP 添加到 jquery 函数

javascript - 使用数字向同级 div 添加类以确定要添加类的 div 数量?

javascript - 将 javascript 对象 camelCase 键转换为 underscore_case

javascript - HTML DOM - 将字符串分散到多行

javascript - 获取CSS过渡值

javascript - 实现Vue可拖动

java - 为什么创建java DocumentBuilder需要2步,而不是1步?

Javascript:如何注入(inject)外部 html 文件? (在同一个域)

javascript - DOM 元素上的选择性事件监听

javascript - Selenium 中的 XPath 是否针对 DOM 或 HTML 文件运行?