js中的document.querySelector()方法舉例詳解
1、常用的三種獲取元素的js方式
1 document.getElementById(""); 2 document.getElementsByClassName(); 3 document.getElementsByTagName(); var doc=document; var box=doc.getElementById("box"); var li=box.getElementsByTagName("li"); var surfaces=box.getElementsByClassName("surfaces");
querySelector()可以直接加點(diǎn)擊事件,而querySelectorAll()不能直接加點(diǎn)擊事件
2、querySelector()
var node = document.querySelector(“#lover”); // 獲取文檔中的第一個(gè)id=lover的元素 var node = document.querySelector(“.lover”); // 獲取文檔中的第一個(gè)class=“l(fā)over"的元素 var node = document.querySelector(“p.lover”); // 獲取class=“l(fā)over” 的第一個(gè)p元素 var node = document.querySelector(“a[target]”); // 獲取第一個(gè)帶target屬性的a元素 var element = document.querySelector(‘.foo,.bar'); //返回帶有foo或者bar樣式類的首個(gè)元素 document.querySelector(“body”).style=”"; // 移除style屬性 document.querySelector(“h2,h3”).style.backgroundColor = “blue”; //為文檔的第一個(gè)h2元素添加背景顏色,但是,如果文檔中
位于元素之前,元素將會(huì)被設(shè)置指定的背景顏色,總結(jié),多元素選擇時(shí),哪個(gè)先匹配就是誰(shuí)咯,只有一個(gè)被選中。
querySelector() 方法僅僅返回匹配指定選擇器的第一個(gè)元素。
3、querySelectorAll
elementList = document.querySelectorAll(selectors);
elementList 是一個(gè)靜態(tài)的 NodeList 類型的對(duì)象。
selectors 是一個(gè)由逗號(hào)連接的包含一個(gè)或多個(gè) CSS 選擇器的字符串。
查找文檔中共包含 “target” 屬性的 標(biāo)簽,并為其設(shè)置邊框:
var x = document.querySelectorAll("a[target]"); var i; for (i = 0; i < x.length; i++) { x[i].style.border = "10px solid red"; } ------------------------------------------- let t0 = window.performance.now(); let li = document.querySelectorAll('li'); console.log("li 的數(shù)量", li.length); for (let i = 0; i < li.length; i++) { li[i].textContent = i; } let t1 = window.performance.now(); console.log("耗時(shí)" + (t1 - t0) + "毫秒");
當(dāng)頁(yè)面中出現(xiàn)多個(gè)相同class標(biāo)簽(或者多個(gè)相同標(biāo)簽(比如多個(gè)div))時(shí),如果你需要返回所有的元素,請(qǐng)使用 querySelectorAll() 方法替代。
該方法返回所有滿足條件的元素,結(jié)果是個(gè)nodeList集合。查找規(guī)則與前面所述一樣。 ---->querySelectorAll 得到一個(gè)偽數(shù)組 DOM。
ParentNode.querySelectorAll()的結(jié)果是NodeList數(shù)組,但是又不是一般的js數(shù)組(Array),所以也不能直接調(diào)用Array的方法
<div id="box"> <ul> <li data->tagname 111</li> <li class="surfaces">這是clase? 222</li> <li class="surfaces">這是class333</li> <li class="surfaces" data->這是class444</li> </ul> </div> <br> document.getElementById("box").addEventListener("click", function(){ var attr=document.querySelectorAll('[data-href]'); console.log(attr); },!1);
<input type="checkbox" name="gender" value="male" checked> <input type="checkbox" name="gender" value="female"> <div lang="en"><q>This English quote has a <q>nested</q> quote inside.</q></div> <div lang="fr"><q>This French quote has a <q>nested</q> quote inside.</q></div> <div lang="de"><q>This German quote has a <q>nested</q> quote inside.</q></div> <input type="text" placeholder="我是占位符"> <input type="text" placeholder="我是占位符" value="我的 value 遮蓋了占位符"> let target = document.querySelector('input[type="checkbox"]:checked'); console.log('使用 querySelector 查找 ', target) let fr = document.querySelector('div:lang(fr)'); console.log('使用 querySelector 查找 ', fr); let pl = document.querySelector('input:placeholder-shown'); console.log('使用 querySelector 查找 ', pl);
document.querySelector.bind和document.querySelectorAll.bind
<div id="box"> <ul> <li >tagname 111</li> <li class="surfaces">這是clase 222</li> <li class="surfaces">這是class333</li> <li class="surfaces">這是class444</li> </ul> </div> -------------------------------------------------------------------------- var query_id=query('#box'); //dom id var query_class=query('.surfaces'); // dom class var query_tagname=query('li') //dom 標(biāo)簽 console.log('query'+query_id.innerHTML); // console.log('query'+query_class.innerHTML); 第一個(gè)222 console.log('query'+query_tagname.innerHTML); 第一個(gè)222 -------------------------------------------------------------------------- 1 var query = document.querySelector.bind(document); //單個(gè)的 var query_id=query('#box'); //dom id var query_class=query('.surfaces'); // dom class var query_tagname=query('li') //dom 標(biāo)簽 query_id.addEventListener('click',function(){ console.log('click_query_id'+this.innerHTML); //click surfaces 2222 }); query_class.addEventListener('click',function(){ var e=e||window.event; console.log('click_query_class'+this.innerHTML); //click surfaces 2222 e.stopPropagation(); }); query_tagname.addEventListener('click', function(e){ var e=e||window.event; console.log('click_query_tagname' + this.innerHTML); //click surfaces 2222 e.stopPropagation(); });
總結(jié)
到此這篇關(guān)于js中document.querySelector()方法的文章就介紹到這了,更多相關(guān)js中document.querySelector()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET jquery ajax傳遞參數(shù)的實(shí)例
下面小編就為大家?guī)?lái)一篇ASP.NET jquery ajax傳遞參數(shù)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11javascript字符串拆分成單個(gè)字符相加和不超過(guò)10,求最終值
javascript字符串拆分成單個(gè)字符相加和不超過(guò)10,求最終值2008-09-09javascript中的previousSibling和nextSibling的正確用法
這篇文章主要介紹了javascript中的previousSibling和nextSibling的正確用法的相關(guān)資料,需要的朋友可以參考下2015-09-09javascript iframe中打開(kāi)文件,并檢測(cè)iframe存在否
從iframe中打開(kāi)文件,并檢測(cè)iframe存在否如果說(shuō)只是檢測(cè)頁(yè)面存在否,直接設(shè)置target用偽協(xié)議就可以解決了...2008-12-12js實(shí)現(xiàn)圖片區(qū)域可點(diǎn)擊大小隨意改變(適用移動(dòng)端)代碼實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)圖片區(qū)域可點(diǎn)擊大小隨意改變(適用移動(dòng)端)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09js 巧妙去除數(shù)組中的重復(fù)項(xiàng)
最近, 我在看YAHOO.util.YUILoader類的源碼, 其中有個(gè)排除數(shù)組重復(fù)項(xiàng)的方法, 讓我覺(jué)得甚為巧妙, 這里分享下…2010-01-01微信小程序?qū)W習(xí)筆記之跳轉(zhuǎn)頁(yè)面、傳遞參數(shù)獲得數(shù)據(jù)操作圖文詳解
這篇文章主要介紹了微信小程序?qū)W習(xí)筆記之跳轉(zhuǎn)頁(yè)面、傳遞參數(shù)獲得數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了微信小程序基于navigator組件的頁(yè)面跳轉(zhuǎn)及數(shù)據(jù)傳遞相關(guān)操作技巧,并結(jié)合圖文形式進(jìn)行詳細(xì)說(shuō)明,需要的朋友可以參考下2019-03-03