Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于'的解释;直播';元素_Javascript_Live_Getelementsbytagname_Nodelist_Selectors Api - Fatal编程技术网

Javascript 关于'的解释;直播';元素

Javascript 关于'的解释;直播';元素,javascript,live,getelementsbytagname,nodelist,selectors-api,Javascript,Live,Getelementsbytagname,Nodelist,Selectors Api,我刚刚读了这篇关于节点列表的文章: 如果我理解正确,getElementsByTag名称是活动的,而querySelectorAll不是。 那么,有人可以向我解释为什么pNotLive的标题是“stackoverflow”?: var pLive = document.getElementsByTagName( 'p' )[3]; var pNotLive = document.querySelectorAll( 'p' )[3]; pLive.title = "stackoverflow"

我刚刚读了这篇关于节点列表的文章:

如果我理解正确,getElementsByTag名称是活动的,而querySelectorAll不是。 那么,有人可以向我解释为什么pNotLive的标题是“stackoverflow”?:

var pLive = document.getElementsByTagName( 'p' )[3];
var pNotLive = document.querySelectorAll( 'p' )[3];

pLive.title = "stackoverflow"
console.log( pNotLive.title ); // stackoverflow

//you can run this snippet in your console to verify

正如您的链接所解释的那样,
getElementsByTagName
方法返回一个集合,该集合在DOM更改时自动更新。因此,如果调用该方法,然后将新元素添加到DOM中,则会自动使用新元素更新集合

其中,如果您使用
querySelectorAll
,您将获得一个DOM元素的静态列表,该列表不会自动更新

我相信您在示例中使用这种行为的原因是因为列表是静态的,而不是元素本身。因此,静态方法只是意味着列表不会更改,因此添加/删除元素不会更改列表。但是当您调用
title
属性时,您的列表只是指向元素,并且该元素与创建列表时不同


简而言之,它更多的是一个引用列表(指向DOM节点),而不是一个数据对象列表(带有固定数据)。

正如您的链接所解释的,
getElementsByTagName
方法返回一个集合,该集合在DOM更改时自动更新。因此,如果调用该方法,然后将新元素添加到DOM中,则会自动使用新元素更新集合

其中,如果您使用
querySelectorAll
,您将获得一个DOM元素的静态列表,该列表不会自动更新

我相信您在示例中使用这种行为的原因是因为列表是静态的,而不是元素本身。因此,静态方法只是意味着列表不会更改,因此添加/删除元素不会更改列表。但是当您调用
title
属性时,您的列表只是指向元素,并且该元素与创建列表时不同


简而言之,它更多的是一个引用列表(指向DOM节点),而不是一个数据对象列表(包含固定数据)。

没错,因此在我的示例中,pNotLive.title不能是“stackoverflow”,或者是访问元素的属性会自动更新它?@HerrWalter:我已经扩展了我的答案,因此,在我的示例中,pNotLive.title不能是“stackoverflow”,或者是访问元素的属性会自动更新它?@HerrWalter:我已经扩展了我的回答“静态”性质与元素的属性和属性无关,它与元素本身的引用有关。“静态”属性自然与元素的属性和属性无关,它与元素本身的引用有关。