动态和静态节点列表

Live and Static NodeLists

本文关键字:列表 节点 静态 动态      更新时间:2023-09-26

好的,所以我在玩静态||现场节点,试图测试这个概念,我尝试了不同的场景,但有两个场景引起了我的注意:

var toBeLogged = document.getElementsByTagName('p');
console.log(toBeLogged.length); // Returns 1 to the console
var newEl = document.createElement('p');
document.body.appendChild(newEl);
console.log(toBeLogged.length); // Returns 2 to the console

这是有意义的,因为getElementsBy…是一个活动节点集合,所以当更新后再次请求该值时,它显然会返回更新后的值。

,但是场景二做了一个小的改变,使"Live"节点器作为静态的:

var toBeLogged = document.getElementsByTagName('p').length;
console.log(toBeLogged); // Returns 1 to the console
var newEl = document.createElement('p');
document.body.appendChild(newEl);
console.log(toBeLogged); // Returns 1 also to the console

所以我的问题是:为什么创建用于表示活动节点列表的长度属性的变量不返回活动值,因为在没有添加属性的情况下直接表示节点列表的变量的值

我正尽可能准确地描述事情。提前感谢。感谢你在这上面花的时间。

document.getElementsByTagName('p').length返回不可变原语值,不能更改,只能替换。.length每次访问都返回新的原语值,而document.getElementsByTagName('p')每次返回相同的对象