国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript 使用 NodeList需要注意的問題

2024-05-06 14:19:24
字體:
來源:轉載
供稿:網友

因此,他們始終存著最新,最準確的信息。從本質上說,所有NodeList對象都是訪問DOM文檔時實時運行的查詢。例如下列代碼會導致無限的循環:

代碼如下:
<script type="text/javascript">
     window.onload=function(){
     var divObj=document.getElementsByTagName('div');
     for(var i=0;i<divObj.length;i++){
     var d=document.createElement("div");
     document.body.appendChild(d);
     }
     }
</script>

   首先取得頁面中的所有div,由于這個集合(divObj)是“動態的”,因此只要有新的div插入到頁面中,divObj都會添加這個新添加的div。也就是說,只要訪問divObj,都會重新查詢一次,重新更新一下divObj。所以,上面的代碼,會出現死循環,因為每次循環的時候都插入了一個新的div,而每次循環都要對條件i<divObj.length求值,意味著會運行取得的所有<div>的查詢。

  如果想要迭代一個NodeList,最好是使用length屬性初始化第二個變量,然后將迭代器與該變量比較。如下代碼所示:

代碼如下:
<script type="text/javascript">
     window.onload=function(){
     var divObj=document.getElementsByTagName('div');
     for(var i=0,len=divObj.length;i<len;i++){
     var d=document.createElement("div");
     document.body.appendChild(d);
     }
     }
</script>

這個例子中初始化了第二個變量(len)。由于len中保存著對divObj.length的在循環開始時的一個快照,因此就會避免上個例子的死循環。

總結:一般來說,應該盡量減少訪問NodeList的次數。因為每次訪問NodeList,都會運行一基于文檔的查詢。所以,可以考慮將從NodeList中取到的值緩存起來,如例子二所示!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 白玉县| 江安县| 元谋县| 西平县| 镇坪县| 海丰县| 咸宁市| 汾西县| 天长市| 岑溪市| 新闻| 巴楚县| 清远市| 蓬莱市| 博乐市| 融水| 兴安盟| 巴彦县| 英吉沙县| 天气| 秦安县| 遂平县| 靖远县| 东丽区| 巴青县| 敖汉旗| 鄂伦春自治旗| 聊城市| 萨迦县| 定襄县| 阿克苏市| 乌兰县| 乌恰县| 清新县| 泾川县| 丹巴县| 萝北县| 宜黄县| 临湘市| 汉阴县| 黄梅县|