js實現的獲取指定元素的節點封裝程式碼例項
對於dom元素的操作是javascript的根本目標,所以獲取要操作動科元素是先決條件。
本章節分享一段程式碼例項,它能夠獲取父元素下面指定的元素節點,希望能夠給需要的朋友帶來一定的幫助。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html><html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> function nth(parent,ele,num){ var _ele=Array.prototype.slice.call(parent.childNodes); var eleArray=[]; for(var index= 0,len=_ele.length;index<len;index++){ if(_ele[index].nodeType==1){ eleArray.push(_ele[index]); } } if(arguments.length===2){ if(typeof arguments[1]==="string"){ _ele=Array.prototype.slice.call(parent.getElementsByTagName(arguments[1])); return _ele; } else if(typeof arguments[1]==="number"){ return eleArray[arguments[1]]; } } else{ _ele=Array.prototype.slice.call(parent.getElementsByTagName(ele)); return _ele[num]; } } window.onload=function(){ var obox=document.getElementById("box"); //選取第三個li元素 console.log(nth(obox,"li",2).innerHTML); //選取第四個按鈕 console.log(nth(obox,"button",3).innerHTML) //選取第二個li下的第二個按鈕 console.log(nth(nth(obox,"li",1),"button",1).innerHTML); //選取第二個li下的所有按鈕 console.log(nth(nth(obox,"li",1),"button")); //選取第二個元素 console.log(nth(obox,2)); } </script> </head> <body> <ul id="box"> <li>螞蟻部落一<button>a</button></li> <li>螞蟻部落二<button>b</button><button>o</button></li> <p>螞蟻部落</p> <li>螞蟻部落三<button>c</button></li> <li>螞蟻部落四<button>d</button></li> <li>螞蟻部落五<button>e</button></li> </ul> </body> </html>
上面的程式碼演示相關功能,在谷歌或者火狐的控制檯下能夠看到輸出結果,下面介紹一下它的實現過程。
一.程式碼註釋:
1.function nth(parent,ele,num){},此函式可以獲取指定的元素節點,第一個引數是父元素物件,第二個引數是要獲取元素節點的型別,第三個引數規定要獲取第幾個元素,第一個元素用0表示。2.var _ele=Array.prototype.slice.call(parent.childNodes),將父元素的所有子節點集合轉換為一個陣列。
3.var eleArray=[],宣告一個空陣列,此陣列用來儲存元素節點。
4.for(var index= 0,len=_ele.length;index<len;index++){
if(_ele[index].nodeType==1){
eleArray.push(_ele[index]);
}
}遍歷父元素的每一個子節點,並將元素節點存入eleArray陣列。
5.if(arguments.length===2),如果arguments的length屬性值等於2,說明實際想nth()函式傳遞了2個引數。
6.if(typeof arguments[1]==="string"){
_ele=Array.prototype.slice.call(parent.getElementsByTagName(arguments[1]));
return _ele;
}如果第二個引數是字串,那麼就認為它規定的是標籤名稱,然後獲取父元素下所有的指定標籤元素,但是感覺這是有點問題的,因為getElementsByTagName()函式是獲取所有的後臺元素,所以最好使用childNodes獲取一級子節點,然後再遍歷每一個節點獲取指定標籤元素。
7.else if(typeof arguments[1]==="number"){
return eleArray[arguments[1]];
}如果是數字的話,那麼就認為它規定的是要獲取第幾個元素節點。
8.else{
_ele=Array.prototype.slice.call(parent.getElementsByTagName(ele));
return _ele[num];
}否則就認為傳遞三個引數,獲取第num個型別為ele的元素。
二.相關閱讀:
1.slice()函式可以參閱javascript Array slice()一章節。
2.call()函式可以參閱js call()一章節。
3.nodeType可以參閱js nodeType一章節。
4.push()函式可以參閱javascript push()一章節。
相關文章
- jquery獲取指定元素的父節點程式碼例項jQuery
- javascript獲取元素封裝程式碼例項JavaScript封裝
- 封裝js獲取當前元素的弟弟元素節點封裝JS
- jQuery獲取指定元素的父元素程式碼例項jQuery
- css獲取指定元素的兄弟元素程式碼例項CSS
- jQuery獲取指定的li元素程式碼例項jQuery
- 使用jquery獲取指定元素的子元素程式碼例項jQuery
- javascript獲取指定元素父元素程式碼例項JavaScript
- js獲取元素的實際尺寸程式碼例項JS
- 獲取指定區間的li元素程式碼例項
- 原生javascript實現獲取指定元素下所有後代元素程式碼例項JavaScript
- 獲取指定元素下所有li元素程式碼例項
- jquery獲取指定元素下所有指定子元素的數目程式碼例項jQuery
- js實現的dom元素拖動封裝外掛程式碼例項JS封裝
- js實現的獲取指定時間前幾天日期程式碼例項JS
- jquery獲取指定型別子元素程式碼例項jQuery型別
- js獲取指定單元格的內容程式碼例項例項JS
- 原生就javascript實現的獲取子元素程式碼例項JavaScript
- js獲取指定函式的形參程式碼例項JS函式
- jQuery獲取指定型別最近的父輩元素程式碼例項jQuery型別
- jquery實現的獲取當前元素的上一個元素程式碼例項jQuery
- js點選平滑定位到指定元素程式碼例項JS
- js獲取陣列中元素出現的次數程式碼例項JS陣列
- js刪除指定的li元素程式碼例項JS
- js獲取指定區間的隨機數程式碼例項JS隨機
- js實現的浮點數取整程式碼例項JS
- jQuery實現的刪除指定子元素程式碼例項jQuery
- 原生js實現的獲取當前元素的上一個元素節點JS
- js實現的獲取選中文字程式碼例項JS
- js實現的元素運動程式碼例項JS
- 獲取第一級指定型別子元素程式碼例項型別
- 用jQuery獲取指定前幾個li元素程式碼例項jQuery
- js獲取頁面中所有元素程式碼例項JS
- javascript獲取元素的順序程式碼例項JavaScript
- js獲取元素在頁面中的座標程式碼例項JS
- js實現的獲取當前日期時間的程式碼例項JS
- jquery獲取元素高度程式碼例項jQuery
- js實現的元素抖動效果程式碼例項JS