JavaScript getElementsByClassName()
getElementsByClassName() 方法可以獲取具有指定 class 屬性值的元素集合。
集合的主要特點總結如下:
(1).集合是動態的,自動感知集合元素的增加或者減少的變化。
(2).集合中元素通過索引進行訪問,索引值從 0 開始計算。
(3).低版本 IE瀏覽器不支援此方法(考慮到軟硬體的進步,本文不做相容處理)。
語法結構:
[JavaScript] 純文字檢視 複製程式碼node.getElementsByClassName(classname)
語法解析:
(1).node:可以是普通的 dom 元素節點,也可以是 document 。
(2).classname:class 屬性值,多個 class 用空格分隔。
瀏覽器支援:
(1).IE9+ 瀏覽器支援此方法。
(2).edge 瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).opera 瀏覽器支援此方法。
(5).火狐瀏覽器支援此方法。
(6).safari 瀏覽器支援此方法。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> ul { width :180px; list-style-type: none; border: 2px dotted green; padding-left:10px } ul li { height :25px; line-height :25px; font-size :12px; padding: 0; } </style> <script> window.onload = ()=> { let lis = document.getElementsByClassName("ant"); let len=lis.length; for (let index = 0; index < len; index++) { lis[index].style.color = "blue"; } } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li class="ant">螞蟻部落二</li> <li>螞蟻部落三</li> <li class="ant">螞蟻部落四</li> <li>螞蟻部落五</li> </ul> </body> </html>
上述程式碼執行效果截圖如下:
將第二個和第四個 li 元素字型顏色設定為藍色,程式碼分析如下:
(1).方法可以根據 class 屬性值檢索元素,返回值是一個集合。
(2).所以 getElementsByClassName() 返回 class 屬性值為 "ant" 元素集合。
(3).然後通過 for 迴圈,將集合中的元素字型顏色設定為藍色。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul { width :180px; list-style-type: none; border: 2px dotted green; padding-left:10px } ul li { height :25px; line-height :25px; font-size :12px; padding: 0; } .fontStyle{ font-weight: bold; } </style> <script> window.onload = ()=> { let lis = document.getElementsByClassName("ant fontStyle"); let len = lis.length; for (let index = 0; index < len; index++) { lis[index].style.color = "blue"; } } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li class="ant fontStyle">螞蟻部落二</li> <li class="ant">螞蟻部落三</li> <li class="fontStyle">螞蟻部落四</li> <li>螞蟻部落五</li> <li>螞蟻部落六</li> </ul> </body> </html>
程式碼執行效果截圖如下:
上述程式碼將第二個 li 元素字型顏色設定為藍色,程式碼分析如下:
(1).class 屬性值可以一次規定多了個類名,空格分隔,例如 <div class=" a b c">。
(2).getElementsByClassName() 方法的引數也可以是多個類名,使用空格分隔。
(3).元素 class 屬性值必須同時具有 "ant" 和 "fontStyle" 才能夠匹配。
(4).所以只有第二個 li 元素的字型顏色才能夠被設定為藍色,其他都不滿足條件。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul { width :180px; list-style-type: none; border: 2px dotted green; padding-left:10px } ul li { height :25px; line-height :25px; font-size :12px; padding: 0; } .fontStyle{ font-weight: bold; } </style> <script> window.onload = ()=> { let lis = document.getElementsByClassName("ant"); let len = lis.length; for (let index = 0; index < len; index++) { lis[index].style.color = "blue"; } } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li class="ant fontStyle">螞蟻部落二</li> <li class="ant">螞蟻部落三</li> <li class="fontStyle">螞蟻部落四</li> <li>螞蟻部落五</li> <li>螞蟻部落六</li> </ul> </body> </html>
上述程式碼執行效果截圖如下:
第二個和第三個 li 元素字型顏色被設定為藍色,程式碼分析如下:
(1).如果想要被方法檢索到,元素 class 屬性值必須具有 getElementsByClassName() 方法引數規定的類。
(2).第二個與第三個 li 元素滿足條件,因為class 屬性值中規定了 "ant" 樣式類。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> ul { width :180px; list-style-type: none; border: 2px dotted green; padding-left:10px } ul li { height :25px; line-height :25px; font-size :12px; padding: 0; } </style> <script> window.onload = ()=> { let oBox = document.getElementById("box"); let lis = oBox.getElementsByClassName("ant"); let len=lis.length; for (let index = 0; index < len; index++) { lis[index].style.color = "blue"; } } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li class="ant">螞蟻部落二</li> <li>螞蟻部落三</li> <li class="ant">螞蟻部落四</li> <li>螞蟻部落五</li> </ul> </body> </html>
程式碼執行效果截圖如下:
getElementsByClassName() 方法的呼叫者可以是 document 也可以是其他普通 dom 元素節點。
使用其他元素物件可以減少方法的檢索範圍,有利於提高效率。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul { width: 150px; list-style-type: none; border: 2px dotted green; padding-left: 10px } ul li { height: 25px; line-height: 25px; font-size: 12px; padding: 0; } #show { width: 160px; border: 2px dotted green; text-align: center; font-size: 12px; } </style> <script> window.onload = ()=> { let oBox = document.getElementById("box"); let oBt = document.getElementById("bt"); let oShow = document.getElementById("show"); let lis = oBox.getElementsByClassName("ant"); oShow.innerHTML=lis.length; oBt.onclick = ()=> { lis[0].remove(); oShow.innerHTML = lis.length; } } </script> </head> <body> <ul id="box"> <li>螞蟻部落一</li> <li class="ant fontsize">螞蟻部落二</li> <li class="ant">螞蟻部落三</li> <li class="fontsize">螞蟻部落四</li> <li>螞蟻部落五</li> <li>螞蟻部落六</li> </ul> <div id="show"></div> <input type="button" id="bt" value="檢視演示"/> </body> </html>
此方法獲取的元素集合是動態的,也就是能夠自動感知集合元素的新增或者刪除。
預設,集合中的元素是兩個,點選按鈕之後,刪除集合中的第一個 li 元素,集合能夠感知這種改變。
所以 div 中顯示的數量變為 1,這一點需要特別注意,否則可能會造成一些不容易察覺的錯誤。
相關文章
- getElementsByClassName()
- getElementsByClassName()方法用法介紹
- getElementsByClassName簡單實現
- getElementsByClassName()方法的瀏覽器支援版本瀏覽器
- document.getElementById(), getElementsByname(),getElementsByClassName()區別
- javascript基礎(Dom查詢的其他方法:body,documentElement,all,getElementsByClassName(),querySelectorAll())(二十八)JavaScript
- 相容所有瀏覽器的getElementsByClassName()函式瀏覽器函式
- 相容低版本IE的document.getElementsByClassName()
- QuerySelector/QuerySelectorAll和getElementById/getElementsByClassName的區別
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- 【JavaScript學習】JavaScript物件建立JavaScript物件
- 【轉】eval()函式(javascript) - [javaScript]函式JavaScript
- [Javascript] How javascript read the property?JavaScript
- JavaScript -"this"JavaScript
- javascript ??JavaScript
- This in JavaScriptJavaScript
- “This” is For JavaScriptJavaScript
- javascript thisJavaScript
- JavaScriptJavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- 【轉向JavaScript系列】AST in Modern JavaScriptJavaScriptAST
- javascript,還是javascript的問題JavaScript
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- 《深入理解JavaScript》——2.3 JavaScript有用嗎JavaScript
- 【JavaScript】--JavaScript總結一覽無餘JavaScript
- 【HTML、JAVASCRIPT、CSS】3、Javascript基本概念HTMLJavaScriptCSS
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript EventJavaScript
- JavaScript BackdoorJavaScript
- JavaScript normalize()JavaScriptORM
- JavaScript setDate()JavaScript
- JavaScript setMinutes()JavaScript
- JavaScript getDate()JavaScript
- JavaScript setHours()JavaScript
- JavaScript setUTCMinutes()JavaScript
- JavaScript setUTCHours()JavaScript