激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - js教程 - js實(shí)現(xiàn)類選擇器和name屬性選擇器的示例步驟

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

2022-01-19 15:09豫見(jiàn)陳公子 js教程

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

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

說(shuō)了JQuery這么多的牛逼之處,那么它的很多內(nèi)部原理是如何實(shí)現(xiàn)的呢?今天就來(lái)簡(jiǎn)單實(shí)現(xiàn)一個(gè)類似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;
}

其實(shí)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屬性選擇器大多用在表單的操作方面。

以上代碼中有一個(gè)nodeType的屬性,它是用來(lái)判斷節(jié)點(diǎn)的類型,nodeType共有12個(gè)值,1代表節(jié)點(diǎn)元素,2代表屬性,3代表元素或?qū)傩灾械奈谋緝?nèi)容。這三個(gè)數(shù)值用的是比較多的,其他9個(gè)用的不多,想了解的話可以去看一下API。在這里,我們需要得到元素節(jié)點(diǎn),所以就會(huì)判斷當(dāng)前元素的nodeType是否為1。

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

?
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
/**
 * 遞歸獲取所有子節(jié)點(diǎn)
 *
 node代表想要獲取所有子節(jié)點(diǎn)的父節(jié)點(diǎn)
 
 type取值:
 1  Element         代表元素
 2  Attr          代表屬性
 3  Text          代表元素或?qū)傩灾械奈谋緝?nèi)容
 4  CDATASection      代表文檔中的 CDATA 部分(不會(huì)由解析器解析的文本)
 5  EntityReference     代表實(shí)體引用
 6  Entity         代表實(shí)體
 7  ProcessingInstruction  代表處理指令
 8  Comment         代表注釋
 9  Document        代表整個(gè)文檔(DOM 樹(shù)的根節(jié)點(diǎn))
 10 DocumentType      向?yàn)槲臋n定義的實(shí)體提供接口
 11 DocumentFragment    代表輕量級(jí)的 Document 對(duì)象,能夠容納文檔的某個(gè)部分
 12 Notation        代表 DTD 中聲明的符號(hào)
*/
var allChildNodes = function (node, type) {
 // 1.創(chuàng)建全部節(jié)點(diǎn)的數(shù)組
 var allCN = [];
 
 // 2.遞歸獲取全部節(jié)點(diǎn)
 var getAllChildNodes = function (node, type, allCN) {
  // 獲取當(dāng)前元素所有的子節(jié)點(diǎn)nodes
  var nodes = node.childNodes;
  // 獲取nodes的子節(jié)點(diǎn)
  for (var i = 0; i < nodes.length; i++) {
   var child = nodes[i];
   // 判斷是否為指定類型節(jié)點(diǎn)
   if (child.nodeType == type) {
    allCN.push(child);
   }
   getAllChildNodes(child, type, allCN);
  }
 }
 getAllChildNodes(node, type, allCN);
 // 3.返回全部節(jié)點(diǎn)的數(shù)組
 return allCN;
}
 
// 調(diào)用:
// 獲取body中全部節(jié)點(diǎn)
allChildNodes(document.querySelector('body'), 1);
 
//獲取body中全部純文本節(jié)點(diǎn)
allChildNodes(document.querySelector('body'), 3)

作者:小壞

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

以上就是js實(shí)現(xiàn)類選擇器和name屬性選擇器的示例步驟的詳細(xì)內(nèi)容,更多關(guān)于js實(shí)現(xiàn)類選擇器和name屬性選擇器的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 深夜视频福利 | 成人午夜天堂 | 欧美在线观看视频网站 | 欧美性生活久久久 | 天堂在线资源库 | www日韩在线 | 久久精品亚洲欧美日韩精品中文字幕 | 国产免费久久久 | av日韩在线免费观看 | 国产99久久久久久免费看农村 | 黄视频网站免费在线观看 | 欧美成人免费电影 | 国产毛片在线 | 欧美激情精品久久久久 | 老女人碰碰在线碰碰视频 | 毛片网站网址 | 欧产日产国产精品v | 国产羞羞视频 | 久久恋| 91精品国产777在线观看 | 日日天日日夜日日摸 | 国产精品亚洲一区二区三区在线观看 | 免费a级片在线观看 | 亚洲精品有限 | 国产精品免费久久久久久 | 久久精品视频国产 | 欧美日韩大片在线观看 | 成人免费午夜视频 | 黄色网址免费在线 | 成人区一区二区三区 | 99日韩精品视频 | av免费在线观看免费 | v11av在线视频成人 | 2019中文字幕在线播放 | 91久久国产综合精品女同国语 | 成人精品aaaa网站 | 欧美综合在线观看 | 中文字幕www | 成人午夜视频免费 | 蜜桃视频在线观看视频 | 亚州精品在线视频 |