电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:133日期:2024-04-06 08:15:02

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代表元素或?qū)傩灾械奈谋緝?nèi)容。這三個數(shù)值用的是比較多的,其他9個用的不多,想了解的話可以去看一下API。在這里,我們需要得到元素節(jié)點,所以就會判斷當前元素的nodeType是否為1。

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

/** * 遞歸獲取所有子節(jié)點 * node代表想要獲取所有子節(jié)點的父節(jié)點 type取值: 1 Element 代表元素 2 Attr 代表屬性 3 Text 代表元素或?qū)傩灾械奈谋緝?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)容,更多關(guān)于js實現(xiàn)類選擇器和name屬性選擇器的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 数控走心机-双主轴走心机厂家-南京建克| 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 塑料脸盆批发,塑料盆生产厂家,临沂塑料广告盆,临沂家用塑料盆-临沂市永顺塑业 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | 微学堂-电动能源汽车评测_电动车性能分享网 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 广东青藤环境科技有限公司-水质检测 | 噪声治理公司-噪音治理专业隔音降噪公司 |