0

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

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... 是一个活动节点集合,因此在更新后再次请求该值时,它显然会返回更新后的值。

但是第二个场景有一个小的变化,使“实时”节点列表成为一个静态的:

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

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

我试图尽可能准确地描述事物。提前致谢。感谢您花在上面的时间。

4

1 回答 1

1

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

于 2016-08-10T11:06:31.533 回答