|
為了從一大堆HTML代碼中找出我們的樹(shù)狀菜單(也許有多個(gè)),我們先來(lái)實(shí)現(xiàn)一個(gè)通過(guò)className找DOM節(jié)點(diǎn)的方法:getElementsByClassName。這是對(duì)瀏覽器自有DOM方法的一個(gè)簡(jiǎn)單但實(shí)用的擴(kuò)充。
此方法有兩個(gè)參數(shù):ele指出以哪個(gè)DOM節(jié)點(diǎn)為根節(jié)點(diǎn)尋找(也就是說(shuō)只找ele的子節(jié)點(diǎn)),className指出符合條件的節(jié)點(diǎn)的class屬性中必須包含怎樣的className。它的返回值是一個(gè)數(shù)組,存放了所有符合條件的節(jié)點(diǎn)。
復(fù)制代碼 代碼如下:
function getElementsByClassName(ele,className) {
//獲取所有子節(jié)點(diǎn)
if(document.all){
var children = ele.all;
}else{
var children = ele.getElementsByTagName('*');
}
//遍歷子節(jié)點(diǎn)并檢查className屬性
var elements = new Array();
for (var i = 0; i < children.length; i++) {
var child = children[i];
var classNames = child.className.split(' ');
for (var j = 0; j < classNames.length; j++) {
if (classNames[j] == className) {
elements[elements.length] = child;
break;
}
}
}
return elements;
}
var trees = getElementsByClassName(document,'TreeView');
最前面的一個(gè)if-else語(yǔ)是為了兼容IE5(IE5不能運(yùn)行
document.getElementsByTagName('*'))。需要注意的是千萬(wàn)不要用瀏覽器檢測(cè)的方法來(lái)寫(xiě)腳本,而應(yīng)該直接使用將要用到的語(yǔ)句來(lái)測(cè)試是否可以執(zhí)行,如果返回值為null或undefined,那再換一種方法。這樣的腳本可以有更好的兼容性,也更健壯。
elements[elements.length] = child;,這句同樣是為了兼容IE5才沒(méi)有使用數(shù)組
的push方法。如果你一定要使用push方法,那么可以在執(zhí)行g(shù)etElementsByClassName()
之前先重載一遍push方法。代碼如下:
Array.prototype.push = function(value){
this[this.length] = value;
} 注:原本我希望getElementsByClassName也能像push方法一樣寫(xiě),比如
HTMLElement.prototype.getElementsByClassName = ...。不過(guò)實(shí)際操作的時(shí)候發(fā)現(xiàn)在
運(yùn)行時(shí)HTMLElement這個(gè)對(duì)象并不是固定的,每種tag似乎都不一樣,只能作罷。
取地址欄參數(shù)
復(fù)制代碼 代碼如下:
//v1:
var URLParams = new Array();
var aParams = document.location.search.substr(1).split('&');
for (i=0; i < aParams.length i++){
var aParam = aParams.split('=');
URLParams[aParam[0]] = aParam[1];
}
//取得傳過(guò)來(lái)的name參數(shù)
name=URLParams['name'];
//v2:
Request = {
QueryString : function(item){
var svalue = location.search.match(new
RegExp('[/?/&]' + item + '=([^/&]*)(/&?)','i'));
return svalue ? svalue[1] : svalue;
}
}
var key = Request.QueryString('key');
JavaScript技術(shù):javascript getElementsByClassName 和js取地址欄參數(shù),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。