javascript getElementsByClassName 和js取地址欄參數

來源:互聯網
上載者:User

getElementsByClassName()
  為了從一大堆HTML代碼中找出我們的樹狀菜單(也許有多個),我們先來實現一個通過className找DOM節點的方法:getElementsByClassName。這是對瀏覽器自有DOM方法的一個簡單但實用的擴充。

  此方法有兩個參數:ele指出以哪個DOM節點為根節點尋找(也就是說只找ele的子節點),className指出合格節點的class屬性中必須包含怎樣的className。它的傳回值是一個數組,存放了所有合格節點。 複製代碼 代碼如下:function getElementsByClassName(ele,className) {
//擷取所有子節點
if(document.all){
var children = ele.all;
}else{
var children = ele.getElementsByTagName('*');
}
//遍曆子節點並檢查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');

  最前面的一個if-else語是為了相容IE5(IE5不能運行
document.getElementsByTagName('*'))。需要注意的是千萬不要用瀏覽器檢測的方法來寫指令碼,而應該直接使用將要用到的語句來測試是否可以執行,如果傳回值為null或undefined,那再換一種方法。這樣的指令碼可以有更好的相容性,也更健壯。
elements[elements.length] = child;,這句同樣是為了相容IE5才沒有使用數組
的push方法。如果你一定要使用push方法,那麼可以在執行getElementsByClassName()
之前先重載一遍push方法。代碼如下:

Array.prototype.push = function(value){
this[this.length] = value;
}  註:原本我希望getElementsByClassName也能像push方法一樣寫,比如
HTMLElement.prototype.getElementsByClassName = ...。不過實際操作的時候發現在
運行時HTMLElement這個對象並不是固定的,每種tag似乎都不一樣,只能作罷。

取地址欄參數 複製代碼 代碼如下://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];
}
//取得傳過來的name參數
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');

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.