<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了Javascript實現元素選擇器功能的具體程式碼,供大家參考,具體內容如下
什麼是元素選擇器?
用過jquery的開發者都知道,jquery封裝了對元素的查詢功能,即通過jquery的api獲取頁面元素的過程,該過程只需提供一個元素選擇的條件字串即可獲取相應的滿足條件的頁面元素。元素選擇器即是指通過條件字串獲取相應元素的一個工具函數。
元素選擇器分為id選擇器、class選擇器、標籤選擇器以及屬性選擇器。
id選擇器即通過元素的id唯一標識獲取元素。
類選擇器即通過元素的class類獲取元素列表。
標籤選擇器即通過元素的標籤名獲取元素列表。
屬性選擇器即通過元素的屬性獲取元素列表。
元素選擇器的實現方法可以由javascript的document物件提供的方法來完成,document物件的關於元素獲取的方法有
1、getElementById
2、getElementsByClassName
3、getElementsByTagName
當然還有其它的方法可以獲取頁面的元素,以上三個是比較常用的獲取頁面元素的方法。
一個簡單的元素選擇器實現
function node(selector) { if(selector.indexOf("#")==0) { var dom = document.getElementById(selector.substring(1)); FE.extend("addClass",dom,addClass); FE.extend("removeClass",dom,removeClass); FE.extend("prevNode",dom,prevNode); FE.extend("value",dom,value); FE.extend("styleSettings",dom,styleSettings); FE.extend("nextNode",dom,nextNode); return dom; }else if(selector.indexOf(".")==0) { var doms = document.getElementsByClassName(selector.substring(1)); var result = []; for(var i=0;i<doms.length;i++) { FE.extend("addClass",doms[i],addClass); FE.extend("removeClass",doms[i],removeClass); FE.extend("prevNode",doms[i],prevNode); FE.extend("value",doms[i],value); FE.extend("styleSettings",doms[i],styleSettings); FE.extend("nextNode",doms[i],nextNode); result.push(doms[i]); } return result; }else { var start = selector.indexOf("["); var end = selector.indexOf("]"); var tagName = selector.substring(0,start); var attrStr = selector.substring(start+1,end); var attr = attrStr.split("="); var doms = document.getElementsByTagName(tagName); var result = []; for(var i=0;i<doms.length;i++) { var attrName = attr[0]; var value = doms[i].getAttribute(attrName) if("'"+value+"'" == attr[1]) { FE.extend("addClass",doms[i],addClass); FE.extend("removeClass",doms[i],removeClass); FE.extend("prevNode",doms[i],prevNode); FE.extend("value",doms[i],value); FE.extend("styleSettings",doms[i],styleSettings); FE.extend("nextNode",doms[i],nextNode); result.push(doms[i]); } } return result; } }
元素選擇器實現總結
簡單來說元素選擇器實現了對元素獲取方法的封裝,每次獲取頁面元素時都不需要再次使用document物件提供的方法,只需使用工具函數node即可獲取頁面元素中滿足selector條件字串的元素,由於頁面元素還具有其它的共同特性,比如修改元素的class屬性的方法addClass、removeClass,修改和獲取style屬性的方法styleSettings,修改和獲取元素屬性的方法value,以及獲取當前元素的上一個元素和下一個元素的方法prevNode、nextNode等。
這些方法可以通過一個擴充套件物件的類方法extend繫結到相應的元素上,不需要再次呼叫或者寫相應的程式碼去獲取或者修改,extend類方法允許擴充套件任意物件的任意屬性,在javascript中一切變數都可以看作一個物件,除了簡單的基本型別的變數外,我們可以使用像這樣的程式碼來獲取和修改物件的屬性
var o = {name:"fe_spiderman",username:"路爺交歡"} /*通過物件參照方式獲取物件的屬性*/ o.name /*通過鍵值對的方式獲取物件的屬性*/ o[「name」]
javascript的這種支援極大的豐富了物件的可延伸性,想象一下不用去繼承和封裝相應的介面來維護程式碼的可讀性帶來的樂趣。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45