之前學(xué)習(xí)了什么是DOM, 知道了DOM就是節(jié)點(diǎn)硬霍,那么面臨的第二個(gè)問題就是帜慢,我們應(yīng)該怎樣去使用這些節(jié)點(diǎn)呢。
想要使用這些元素節(jié)點(diǎn)呢唯卖,首先就要先獲取元素節(jié)點(diǎn)粱玲,然后再對(duì)其進(jìn)行操作。
那么如何獲取元素節(jié)點(diǎn)呢拜轨?DOM提供了三種方法抽减,getElementById()、getElementsByTagName()橄碾、getElementsByClassName()來獲取卵沉。
1.getElementById
getElementById() 方法返回帶有指定 ID 的元素:
使用方法:document.getElementById(id);
這是之前使用過的一段代碼:
接下來用它來進(jìn)行具體的操作。
document.getElementById("like");
這個(gè)語句就獲取了id屬性值為"like"的這個(gè)元素法牲,然后用typeof操作符查看它的操作數(shù)是什么類型史汗。
在代碼中加入:
<script>
alert(typeof document.getElementById("like"));
</script>
結(jié)果如下圖所示,其結(jié)果說明document.getElementById("like")的類型是一個(gè)對(duì)象拒垃,事實(shí)上停撞,文檔中的每一個(gè)元素都是一個(gè)對(duì)象。利用這個(gè)方法我們可以得到HTML中的任何一個(gè)對(duì)象悼瓮。但是id是獨(dú)一無二的怜森,當(dāng)我們需要獲取沒有id的對(duì)象是就要用到getElementsByTagName方法了。
2.getElementsByTagName
getElementsByTagName() 返回帶有指定標(biāo)簽名的所有元素谤牡。
使用方法:document.getElementsByTagName(tagname);
這個(gè)方法與getElementById方法有些相似的地方副硅,但是不同的地方是它返回的是一個(gè)數(shù)組,例如將之前的句子改成:
alert(document.getElementsByTagName("li").length);
其結(jié)果為:
結(jié)果顯示的是3翅萤,而我們的代碼中有三個(gè)li標(biāo)簽恐疲,說明這個(gè)句子獲取了所有指定的標(biāo)簽名的所有元素。如果要對(duì)其中一個(gè)li標(biāo)簽進(jìn)行操作的話套么,只要知道該標(biāo)簽的位置就可以使用了培己。這里的每個(gè)元素都是一個(gè)對(duì)象,我們可以用之前的typeof方法來證明一下胚泌。為了不用反復(fù)的敲同一段代碼將其賦值給一個(gè)變量省咨。
var items=document.getElementsByTagName("li");
for(var i=0;i<items.length;i++){
alert(typeof items[i]);
}
你會(huì)看到三個(gè)如上圖一樣的警告框,說明items中的每一個(gè)元素都是一個(gè)對(duì)象玷室。
3.getElementsByClassName
這個(gè)方法讓我們能夠通過class屬性中的類名訪問元素零蓉。
使用方法:document.getElementsByClassName(class);
這個(gè)方法的參數(shù)是類名笤受,我們依舊使用alert來進(jìn)行操作:
alert(document.getElementsByClassName("fruit").length);
其結(jié)果如上圖所示,其長(zhǎng)度為2敌蜂,因?yàn)槲覀兇a中class為"fruit"的元素只有后兩個(gè)li標(biāo)簽箩兽,所以第一個(gè)li標(biāo)簽并沒有被我們獲取到。這樣的話當(dāng)我們需要對(duì)不同的li元素進(jìn)行操作時(shí)章喉,也可以不用知道li標(biāo)簽是第幾個(gè)了汗贫,只要知道它們的類名,我們也能夠?qū)λM(jìn)行操作秸脱。
注釋:getElementsByClassName() 在 Internet Explorer 5,6,7,8 中無效落包。