Javascript根據類名獲取元素
在前端開發中,經常需要根據元素的類名來獲取對應的DOM元素。這時,Javascript提供一種方便的方法來實現——getElementsByClassName()。
假設我們有如下HTML代碼:
<div class="container"> <div class="box">box1</div> <div class="box">box2</div> <div class="box">box3</div> </div>
現在,我們希望獲取所有類名為"box"的DOM元素,可以使用如下代碼:
var boxes = document.getElementsByClassName("box");
執行這段代碼后,變量boxes將包含所有類名為"box"的DOM元素。
如果要獲取某一個具體的元素,可以通過下標來指定:
var box1 = boxes[0]; //獲取第一個box元素 var box2 = boxes[1]; //獲取第二個box元素
如果有多個類名,可以在getElementsByClassName()中傳入多個類名參數:
<div class="container"> <div class="box yellow">box1</div> <div class="box red">box2</div> <div class="box yellow">box3</div> </div> var yellowBoxes = document.getElementsByClassName("box yellow"); //獲取類名為"box"和"yellow"的元素 var redBoxes = document.getElementsByClassName("box red"); //獲取類名為"box"和"red"的元素
需要注意的是,getElementsByClassName()返回的是一個類似數組的對象,不能直接使用數組的方法進行操作,需要先將其轉化為數組。幸運的是,現代瀏覽器提供了Array.from()方法來將其轉化為數組:
var boxes = document.getElementsByClassName("box"); var boxArray = Array.from(boxes); //將boxes對象轉化為數組 boxArray.forEach(function(box){ //對每個box進行操作 });
另外,如果想要支持IE8及以下版本的瀏覽器,可以使用自定義的函數來模擬getElementsByClassName()的功能:
function getElementsByClassName(className){ var result = []; var elems = document.getElementsByTagName("*"); for(var i=0;i<elems.length;i++){ var elem = elems[i]; if(elem.className.indexOf(className) > -1){ result.push(elem); } } return result; }
以上就是根據類名獲取元素的相關內容,希望能對大家有所幫助。