Cody Lindley意味着什么"集合中包含的节点要么是真实文档的一部分,要么是实时文档的快照"?

时间:2016-06-07 12:06:53

标签: javascript html dom

我没有得到这个引用:

  

" [DOM节点]的集合可以是实时的也可以是静态的。这意味着集合中包含的节点实际上是实时文档的一部分或实时文档的快照。"

我特意混淆了他的意思,因为他是现场文件的一部分或现场文件的快照"。他并没有对此进行扩展。

我的第一反应

他是指集合能够持有(1)仍然存在于DOM中的节点(即" live")或(2)当前DOM中不再存在的节点的能力例如,当您可以使用删除节点的方法但还返回它删除的节点(即快照)时?

他从来没有真正扩展这一点,所以我想知道我是否错过了本书前面的内容,或者只是缺乏他认为读者应该具备的一些必备知识。

任何帮助grokking这将非常感谢!感谢。

完整的摘录如下:

  

1.13 Grokking节点集合(即Nodelist& HTMLcollection)

     

从树中选择节点组(在第3章中介绍)或   访问预定义的节点集,节点放在一个   NodeList(例如document.querySelectorAll(' *'))或HTMLCollection(例如,   document.scripts)。这些数组就像(即不是真正的数组)对象   具有以下特征的集合。

     
      
  • 集合可以是实时的也可以是静态的。意思是节点   包含在集合中的字面意思是现场的一部分   文档或实时文档的快照。
  •   
  • 默认节点是   按树顺序在集合内部排序。意思是命令   匹配从树干到分支的线路路径。
  •   
  • 集合的长度属性反映了列表中的元素数量
  •   

来自Cody Lindley的Dom启蒙运动: http://domenlightenment.com/

如果有帮助,请进一步阅读:

节点列表https://www.w3.org/TR/dom/#nodelist

HTML收藏https://www.w3.org/TR/dom/#htmlcollection

1 个答案:

答案 0 :(得分:1)

根据我发现的信息 - 并在评论中发布 - 我总结为:

当您查询DOM以检索节点集合时,根据使用的方法(IE:Document.querySelectorAll()Document.querySelect()等),您将获得{{1}的列表或live个节点,区别在于对DOM的更改将反映在static集合中已存在的节点中,而相同的更改不会影响这些相同的节点,如果他们在live集合中。

因此,如果您想在查询DOM的那个时刻获得快照,则应使用返回static集合的方法。这样,如果在您使用此集合时以任何方式更改DOM,则不会对集合中的这些元素应用任何内容。与static集合相反。