欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實現(xiàn)類選擇器和name屬性選擇器的示例步驟

 更新時間:2021年02月07日 08:40:36   作者:豫見陳公子  
這篇文章主要介紹了js實現(xiàn)類選擇器和name屬性選擇器的示例步驟,幫助大家更好的理解和使用js,感興趣的朋友可以了解下

jQuery的出現(xiàn),大大的提升了我們操作dom的效率,使得我們的開發(fā)更上一層樓,如jQuery的選擇器就是一個很強大的功能,它包含了類選擇器、id選擇器、屬性選擇器、元素選擇器、層級選擇器、內(nèi)容篩選選擇器等等,很是方便快捷,并且這些選擇器的兼容性都很好,可以說操作dom使用jq選擇器一時爽,一直使用一直爽!只是,目前Vue、React、Angular三大框架的出現(xiàn)大大降低了JQuery的使用頻率,而且JQuery在操作dom和綁定數(shù)據(jù)時確實存在一定的性能問題和各種坑,但依舊不可抹殺jq在操作dom方面的強大存在!

說了JQuery這么多的牛之處,那么它的很多內(nèi)部原理是如何實現(xiàn)的呢?今天就來簡單實現(xiàn)一個類似jQuery的類選擇器和name屬性選擇器。

類選擇器:

function getElementsByClass(className) {
   var classArr = [];
   var tags = document.getElementsByTagName("*");

   for (var i = 0; i < tags.length; i++) {
    if (tags[i].nodeType == 1) {
     if (tags[i].getAttribute("class") == className) {
      classArr.push(tags[i]);
     }
    }
   }
   return classArr;
}

其實name屬性選擇器跟類選擇器一樣,只是判斷條件稍微變了一下而已:

function getElementsByName(name) {
   var nameArr = [];
   var num = 0;
   var tags = document.getElementsByTagName("*");

   for (var i = 0; i < tags.length; i++) {
    if (tags[i].nodeType == 1) {
     if (tags[i].getAttribute("name") == name) {
      nameArr.push(tags[i]);
     }
    }
   }

   return nameArr;
}

name屬性選擇器大多用在表單的操作方面。

以上代碼中有一個nodeType的屬性,它是用來判斷節(jié)點的類型,nodeType共有12個值,1代表節(jié)點元素,2代表屬性,3代表元素或屬性中的文本內(nèi)容。這三個數(shù)值用的是比較多的,其他9個用的不多,想了解的話可以去看一下API。在這里,我們需要得到元素節(jié)點,所以就會判斷當前元素的nodeType是否為1。

再來貼一下用遞歸來實現(xiàn)獲取元素的所有子節(jié)點(含孫子節(jié)點):

  /** 
   * 遞歸獲取所有子節(jié)點
   * 
   node代表想要獲取所有子節(jié)點的父節(jié)點

   type取值:
   1  Element         代表元素
   2  Attr          代表屬性
   3  Text          代表元素或屬性中的文本內(nèi)容
   4  CDATASection      代表文檔中的 CDATA 部分(不會由解析器解析的文本)
   5  EntityReference     代表實體引用
   6  Entity         代表實體
   7  ProcessingInstruction  代表處理指令
   8  Comment         代表注釋
   9  Document        代表整個文檔(DOM 樹的根節(jié)點)
   10 DocumentType      向為文檔定義的實體提供接口
   11 DocumentFragment    代表輕量級的 Document 對象,能夠容納文檔的某個部分
   12 Notation        代表 DTD 中聲明的符號
  */
  var allChildNodes = function (node, type) {
   // 1.創(chuàng)建全部節(jié)點的數(shù)組
   var allCN = [];

   // 2.遞歸獲取全部節(jié)點
   var getAllChildNodes = function (node, type, allCN) {
    // 獲取當前元素所有的子節(jié)點nodes
    var nodes = node.childNodes;
    // 獲取nodes的子節(jié)點
    for (var i = 0; i < nodes.length; i++) {
     var child = nodes[i];
     // 判斷是否為指定類型節(jié)點
     if (child.nodeType == type) {
      allCN.push(child);
     }
     getAllChildNodes(child, type, allCN);
    }
   }
   getAllChildNodes(node, type, allCN);
   // 3.返回全部節(jié)點的數(shù)組
   return allCN;
  }

  // 調(diào)用:
  // 獲取body中全部節(jié)點
  allChildNodes(document.querySelector('body'), 1);
  
  //獲取body中全部純文本節(jié)點
  allChildNodes(document.querySelector('body'), 3)

作者:小壞

出處:http://tnnyang.cnblogs.com

以上就是js實現(xiàn)類選擇器和name屬性選擇器的示例步驟的詳細內(nèi)容,更多關于js實現(xiàn)類選擇器和name屬性選擇器的資料請關注腳本之家其它相關文章!

相關文章

  • 小程序實現(xiàn)手寫板簽名

    小程序實現(xiàn)手寫板簽名

    這篇文章主要為大家詳細介紹了小程序實現(xiàn)手寫板簽名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • json格式數(shù)據(jù)的添加,刪除及排序方法

    json格式數(shù)據(jù)的添加,刪除及排序方法

    這篇文章主要介紹了json格式數(shù)據(jù)的添加,刪除及排序方法,結合實例形式分析了針對一維數(shù)組與二維數(shù)組的json格式數(shù)據(jù)進行增加、刪除與排序的實現(xiàn)技巧,需要的朋友可以參考下
    2016-01-01
  • 原生javaScript實現(xiàn)圖片延時加載的方法

    原生javaScript實現(xiàn)圖片延時加載的方法

    這篇文章主要介紹了原生javaScript實現(xiàn)圖片延時加載的方法,無需通過載入jQuery腳本即可實現(xiàn)圖片的延時加載效果,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • 通過共享Promise解決前端重復請求的代碼示例

    通過共享Promise解決前端重復請求的代碼示例

    在處理前端重復請求問題時,通過共享?Promise?實現(xiàn)請求合并和結果復用是常見的高效解決方案,本文給大家介紹了詳細實現(xiàn)思路和代碼示例,需要的朋友可以參考下
    2025-03-03
  • bootstrap paginator分頁前后臺用法示例

    bootstrap paginator分頁前后臺用法示例

    這篇文章主要為大家詳細介紹了bootstrap paginator分頁前后臺用法示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • uniapp實現(xiàn)app檢查更新與升級詳解(uni-upgrade-center)

    uniapp實現(xiàn)app檢查更新與升級詳解(uni-upgrade-center)

    UniApp是一個跨平臺的開發(fā)框架,可以同時開發(fā)iOS和Android應用,下面這篇文章主要給大家介紹了關于uniapp實現(xiàn)app檢查更新與升級(uni-upgrade-center)的相關資料,需要的朋友可以參考下
    2023-11-11
  • JS獲取當前日期和時間的簡單實例

    JS獲取當前日期和時間的簡單實例

    這篇文章主要介紹了JS獲取當前日期和時間的簡單實例,有需要的朋友可以參考一下
    2013-11-11
  • 獲取table中的rowIndex和cellIndex

    獲取table中的rowIndex和cellIndex

    獲取table中的rowIndex和cellIndex...
    2006-12-12
  • 微信小程序實現(xiàn)購物車功能

    微信小程序實現(xiàn)購物車功能

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • js里面的變量范圍分享

    js里面的變量范圍分享

    今天寫一個滑動自動加載的功能的時候,遇到了切換就發(fā)現(xiàn)加載完畢的情況,查看了下發(fā)現(xiàn)可能是js的全局變量和局部變量的問題,自己測試了下,果不其然,下面分享下
    2020-07-07

最新評論