如何讓javascript支持getElementsByClassName

我們知道,在javascript中有幾種DOM方法可以獲取元素的節點,常用的有getElementById,getElementsByName,getElementsByTagName。但是我們在寫頁面時,用的最多的還是class,而javascript中缺沒有getElementsByClassName方法,很讓人糾結(在html5中已經可以使用該方法)。

下面我們就通過已有的DOM方法來寫個getElementsByClassName方法,話不多說先附上代碼:
function getElementsByClassName(classname) {
	var results = new Array();
	var elems = document.getElementsByTagName("*");
	for(var i = 0; i<elems.length; i++) {
		if(elems[i].className.indexOf(classname) != -1) {
			results[results.length] = elems[i];
		}
	}
	return results;
}
代碼解析:
function getElementsByClassName(classname) {
	//代碼
}
我們先建立一個函數getElementsByClassName並傳遞一個參數classname,而這個classname就是我們所希望得到的類。
var results = new Array();
通過類獲取到的元素可能有一個,也可能有多個,所以它和getElementsByTagName一樣,返回的是一個對象數組。
var elems = document.getElementsByTagName("*");
我們知道,類都是應用在html標籤上,如 div,p,ul,li等,所以我們要獲取到整個文檔下的所有html標籤,把它們賦給elems這個數組。
for(var i = 0; i<elems.length; i++) {
	if(elems[i].className.indexOf(classname) != -1) {
		results[results.length] = elems[i];
	}
}
遍歷elems數組,判斷數組中的標籤類名是否是我們需要的(classname),如果是我們需要的,就把它賦給前面所建立的results數組。
return results
把results數組返回給getElementsByClassName函數。
最後我要說明下,想要獲取類節點的方法有很多,我的方法並不是最好的,比如它不支持獲取多個類。
最後的最後,我剛剛開始學習javascript,是個新手,如果哪裏有不對的地方,歡迎大牛指導。微笑

PS:博客搬家了,以後不再 CSDN 更新了,見諒。最新博客地址:http://www.cnblogs.com/yjzhu/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章