代码改变世界

使用NodeList

  大额_skylar  阅读(309)  评论(0编辑  收藏  举报

 

   理解NodeList、NamedNodeMap和HTMLCollection是整体透彻理解DOM的关键。

   这三个集合都是“动态”的,也就是说:每当文档结构发生变化时,他们都会得到更新,他们始终保存的都是最新最准确的信息。

   从本质上说:所有NodeList对象都是在访问DOM文档时实时运行的查询。

 

  

复制代码
//下面代码会无限循环

var divs = document.getElementsByTagName('div');
var i,
   div;

   for(i=0;i<divs.length;i++){
       div = document.createElement('div');
       document.body.appendChild(div);
   }
复制代码

 

   第一行代码会取得文档中所有<div>元素的HTMLCollection。由于这个集合是动态的,因此只要有新的<div>元素被加到页面中,集合都会被更新。i和div.length会同时递增,结果他们的值永远不会相等,就会无限循环。

 

   

复制代码
//下面代码会正常运行

var divs = document.getElementsByTagName('div');
var i,
    len,
    div;

 //len保存的是divs.length循环开始时的一个快照是不变的
   for(i=0;len=divs.length;i<len;i++){
       div = document.createElement('div');
       document.body.appendChild(div);
   }
复制代码

 

  一般来说应该尽量减少访问NodeList的次数,因为每次访问NodeList都会运行一次基于文档的查询。

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示