<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        DOM中的NodeList與HTMLCollection_html/css

        來源:懂視網 責編:小采 時間:2020-11-27 16:14:15
        文檔

        DOM中的NodeList與HTMLCollection_html/css

        DOM中的NodeList與HTMLCollection_html/css_WEB-ITnose:最近在看《Javascript高級程序設計》的時候,看到了這樣一句話:理解NodeList和HTMLCollection,是從整體上透徹理解DOM的關鍵所在。所以覺得應該寫一篇關于NodeList和HTMLCollection的博客來好好了解和總結下這方面的知識點。 NodeList
        推薦度:
        導讀DOM中的NodeList與HTMLCollection_html/css_WEB-ITnose:最近在看《Javascript高級程序設計》的時候,看到了這樣一句話:理解NodeList和HTMLCollection,是從整體上透徹理解DOM的關鍵所在。所以覺得應該寫一篇關于NodeList和HTMLCollection的博客來好好了解和總結下這方面的知識點。 NodeList
          最近在看《Javascript高級程序設計》的時候,看到了這樣一句話:“理解NodeList和HTMLCollection,是從整體上透徹理解DOM的關鍵所在。”,所以覺得應該寫一篇關于NodeList和HTMLCollection的博客來好好了解和總結下這方面的知識點。

        NodeList

          NodeList是一個節點的集合(既可以包含元素和其他節點),在DOM中,節點的類型總共有12種,通過判斷節點的nodeType來判斷節點的類型。

          我們可以通過Node.childNodes和document.querySelectAll() (返回NodeList的接口有很多,這里不一一列舉,下同)來獲取到一個NodeList對象。

          NodeList對象有個length屬性和item()方法,length表示所獲得的NodeList對象的節點個數,這里還是要強調的是節點,而item()可以傳入一個索引來訪問Nodelist中相應索引的元素。

         1  2 3 文本節點 4 5 node1 6 node2 7 node3 8 9 10 
        輸出為914

          上面的HTML代碼中,“文本節點”和父節點子節點的空格(連著的文本)算做一個文本節點,然后是一個注釋節點和注釋節點和元素節點之間的空格(換行會產生空格,空格算做文本節點)的文本節點,緊接著的是一個元素節點和元素節點之間的換行的文本節點,三個元素節點和元素節點間的兩個文本節點,最后是最后得元素節點和父元素之間的空格產生的文本節點,總共是9個節點。

          NodeList對象的一大特點是它返回的內容是動態的(live),也就是說我們上面代碼獲取nodeLists是類似于“指針”的東西,所以在下面代碼中我們在獲取了nodeLists之后再向node中插入一個創建的span標簽后,發現獲取到了nodeLists.length變為10了,但是querySelectorAll這個接口返回的nodeList對象比較特殊,它是個靜態(static)的對象。而且是元素的集合。

         1  2 3 文本節點 4 5 node1 6 node2 7 node3 8 9 10 
        輸出為1016 console.log(queryNodes.length) //輸出為317

          HTMLCollection

          HTMLCollection是元素集合,它和NodeList很像,有length屬性來表示HTMLCollection對象的長度,也可以通過elements.item()傳入元素索引來訪問。當時它還有一個nameItem()方法,可以返回集合中name屬性和id屬性值得元素。HTMLDocument 接口的許多屬性都是 HTMLCollection 對象,它提供了訪問諸如表單、圖像和鏈接等文檔元素的便捷方式,比如document.images和document.forms的屬性都是HTMLCollection對象。

         1  2  3  4  5  6  7  8  9 

          HTMLCollection的集合和NodeList對象一樣也是動態的,他們獲取的都是節點或元素集合的一個引用。

          HTMLCollection和NodeList 實時性

          前面都說到了它們連個對象都不是歷史文檔狀態的一個靜態快照,而是實時性的,這個是一個非常令人驚訝的特性,它們能隨著文檔的改變而改變,這個是很值得我們注意的,我們在平常使用一些DOM 接口來返回一些DOM集合的時候,常常會忽視掉這些。

          HTMLCollection和NodeList的實時性非常有用,但是,我們有時要迭代一個NodeList或HTMLCollection對象的時候,我們通常會選擇生成當前對象的一個快照或靜態副本:

          

        1 var staticLists = Array.prototype.slice.call(nodeListorHtmlCollection, 0)

         這樣的話,我們就可以放心的對當前的DOM集合做一些刪減和插入操作,這個在DOM密集操作的時候很有用。

          還有MDN上面提到了一個將NodeList轉化為Array的DOM擴展原型的方法(在IE6/7中存在危險:http://perfectionkills.com/whats-wrong-with-extending-the-dom/):

        var arrayMethods = Object.getOwnPropertyNames( Array.prototype );arrayMethods.forEach( attachArrayMethodsToNodeList );function attachArrayMethodsToNodeList(methodName){ if(methodName !== "length") { NodeList.prototype[methodName] = Array.prototype[methodName]; }};var divs = document.getElementsByTagName( 'div' );var firstDiv = divs[ 0 ];firstDiv.childNodes.forEach(function( divChild ){ divChild.parentNode.style.color = '#0F0';});

          結語

          DOM最初設計是為了解析XML而設計的,之后沿用到HTML上。我們可以把DOM分為兩部分 core 和 html,Core 部分提供最基礎的 XML 解析API說明,HTML 部分專為 HTML 中的 DOM 解析添加其特有的 API。NodeList接口是在core中體現的,HTMLCollection則是在html部分,不同瀏覽器也會實現它們的不同接口,廠商聯盟性質的規范組織出現會讓這些更加規范,也不出現之前返回的是NodeList對象,但是卻是靜態的。

          這篇文章很多思想都是自己在平時和網上了一些博客中了解到了,其中加了很多自己的組織和理解,目的在于梳理下一些比較深入的知識點,如果寫的有疏漏和錯誤之處,還請指出。

          

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        DOM中的NodeList與HTMLCollection_html/css

        DOM中的NodeList與HTMLCollection_html/css_WEB-ITnose:最近在看《Javascript高級程序設計》的時候,看到了這樣一句話:理解NodeList和HTMLCollection,是從整體上透徹理解DOM的關鍵所在。所以覺得應該寫一篇關于NodeList和HTMLCollection的博客來好好了解和總結下這方面的知識點。 NodeList
        推薦度:
        標簽: 中的 no html
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 99在线免费视频| 国产精品九九久久免费视频 | 亚洲视频一区调教| 中文字幕日本人妻久久久免费| 亚洲欧洲一区二区三区| 一区二区三区在线免费观看视频 | 国产精品免费看久久久无码| 亚洲精品无码久久久久秋霞| 手机在线免费视频| 久久精品国产亚洲AV电影网| 免费在线精品视频| 国产午夜无码精品免费看| 久久久久无码精品亚洲日韩| 毛片高清视频在线看免费观看| 亚洲国产成人资源在线软件| 成人免费AA片在线观看| 国内精品久久久久影院亚洲| 国产乱子伦精品免费女| 亚洲日本精品一区二区| 成人福利免费视频| 亚洲国产成人无码AV在线影院| 国产亚洲精品免费| www免费黄色网| 精品亚洲成AV人在线观看| 97性无码区免费| 鲁啊鲁在线视频免费播放| 亚洲精品成人片在线播放 | 一个人免费观看在线视频www| 亚洲最大的成人网| 久久亚洲欧洲国产综合| 亚洲AV无码一区二区三区久久精品 | 国产成人无码区免费A∨视频网站| 青青草国产免费国产是公开| 亚洲AV无码国产在丝袜线观看| 国产男女爽爽爽爽爽免费视频| 国产亚洲精品美女| 91久久亚洲国产成人精品性色| 国产又黄又爽又刺激的免费网址 | 亚洲AⅤ视频一区二区三区| 一级毛片aaaaaa免费看| 亚洲日本VA午夜在线电影|