一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - js實現類選擇器和name屬性選擇器的示例步驟

js實現類選擇器和name屬性選擇器的示例步驟

2022-01-19 15:09豫見陳公子 js教程

這篇文章主要介紹了js實現類選擇器和name屬性選擇器的示例步驟,幫助大家更好的理解和使用js,感興趣的朋友可以了解下

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

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

類選擇器:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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屬性選擇器跟類選擇器一樣,只是判斷條件稍微變了一下而已:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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的屬性,它是用來判斷節點的類型,nodeType共有12個值,1代表節點元素,2代表屬性,3代表元素或屬性中的文本內容。這三個數值用的是比較多的,其他9個用的不多,想了解的話可以去看一下API。在這里,我們需要得到元素節點,所以就會判斷當前元素的nodeType是否為1。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
 * 遞歸獲取所有子節點
 *
 node代表想要獲取所有子節點的父節點
 
 type取值:
 1  Element         代表元素
 2  Attr          代表屬性
 3  Text          代表元素或屬性中的文本內容
 4  CDATASection      代表文檔中的 CDATA 部分(不會由解析器解析的文本)
 5  EntityReference     代表實體引用
 6  Entity         代表實體
 7  ProcessingInstruction  代表處理指令
 8  Comment         代表注釋
 9  Document        代表整個文檔(DOM 樹的根節點)
 10 DocumentType      向為文檔定義的實體提供接口
 11 DocumentFragment    代表輕量級的 Document 對象,能夠容納文檔的某個部分
 12 Notation        代表 DTD 中聲明的符號
*/
var allChildNodes = function (node, type) {
 // 1.創建全部節點的數組
 var allCN = [];
 
 // 2.遞歸獲取全部節點
 var getAllChildNodes = function (node, type, allCN) {
  // 獲取當前元素所有的子節點nodes
  var nodes = node.childNodes;
  // 獲取nodes的子節點
  for (var i = 0; i < nodes.length; i++) {
   var child = nodes[i];
   // 判斷是否為指定類型節點
   if (child.nodeType == type) {
    allCN.push(child);
   }
   getAllChildNodes(child, type, allCN);
  }
 }
 getAllChildNodes(node, type, allCN);
 // 3.返回全部節點的數組
 return allCN;
}
 
// 調用:
// 獲取body中全部節點
allChildNodes(document.querySelector('body'), 1);
 
//獲取body中全部純文本節點
allChildNodes(document.querySelector('body'), 3)

作者:小壞

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

以上就是js實現類選擇器和name屬性選擇器的示例步驟的詳細內容,更多關于js實現類選擇器和name屬性選擇器的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/tnnyang/p/11039058.html

延伸 · 閱讀

精彩推薦
  • js教程js實現有趣的倒計時效果

    js實現有趣的倒計時效果

    這篇文章主要為大家詳細介紹了js實現有趣的倒計時效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    搬磚大法4422022-01-04
  • js教程原生js實現自定義滾動條組件

    原生js實現自定義滾動條組件

    這篇文章主要為大家詳細介紹了原生js實現自定義滾動條組件的開發,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    蒲公英芽11422022-01-05
  • js教程Javascript實現打鼓效果

    Javascript實現打鼓效果

    這篇文章主要為大家詳細介紹了Javascript實現打鼓效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    qq_413093507472022-01-11
  • js教程js定時器出現第一次延遲的原因及解決方法

    js定時器出現第一次延遲的原因及解決方法

    在本篇文章里小編給大家整理的是一篇關于js定時器出現第一次延遲的原因及解決方法,對此有需要的朋友們可以學習下。...

    宋宋大人4972021-12-24
  • js教程JS removeAttribute()方法實現刪除元素的某個屬性

    JS removeAttribute()方法實現刪除元素的某個屬性

    這篇文章主要介紹了JS removeAttribute()方法實現刪除元素的某個屬性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    C語言中文網7762021-12-30
  • js教程js刪除對象中的某一個字段的方法實現

    js刪除對象中的某一個字段的方法實現

    這篇文章主要介紹了js刪除對象中的某一個字段的方法實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    兔子零847342021-12-29
  • js教程JavaScript實現下拉列表

    JavaScript實現下拉列表

    這篇文章主要為大家詳細介紹了JavaScript實現下拉列表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    編程的牛牛11712022-01-05
  • js教程JS實現簡單抖動效果

    JS實現簡單抖動效果

    這篇文章給大家結束了通過js實現抖動效果,非常不錯,具有參考借鑒價值,感興趣的朋友參考下吧...

    catEatBird9142022-01-12
主站蜘蛛池模板: 亚洲精品短视频 | 国产草草 | 久久精品国产亚洲AV麻豆欧美玲 | 三级理论在线观看 | 7777奇米 | 亚洲一区二区三区91 | 男人疯狂擦进女人下面 | 国产三级精品播放 | 国产精品视频一区二区三区w | 日本wwxx护士 | 91精品综合国产在线观看 | 惊弦45集免费看 | 国产图色 | 粉嫩极品国产在线观看免费 | 女娃开嫩苞经历小说 | 暖暖 免费 高清 日本 中文 | 日韩毛片在线影视 | 4虎影院在线观看 | ass极品美妇pic | 羞羞色男人的天堂伊人久久 | 国产成+人+综合+欧美 亚洲 | 好大好爽好硬我要喷水了 | www.色婷婷.com | 91短视频版高清在线观看免费 | 欧美日韩一级视频 | 国产亚洲精品一区二区在线观看 | 日韩欧美一区二区三区免费看 | 久久久久综合 | 九九99香蕉在线视频美国毛片 | zozzozozozo大 | 男人网站视频 | 成年女人毛片免费观看97 | 公翁的舌尖研磨她的花蒂小说 | 日韩成本大片35分钟免费播放 | 美女的隐私视频免费看软件 | 日本一区二区不卡久久入口 | 日韩免费高清完整版 | blacked亚裔videoshd | 亚洲系列国产精品制服丝袜第 | 我强进了老师身体在线观看 | 韩国三级做爰 |