//将childNodes返回的数据转化为数组的方法 function convertToArray(nodes){ var array=null; try{ array=Array.prototype.slice.call(nodes,0); }catch(ex){ array=new Array(); for(var i=0,len=nodes.length;i<len;i++){ array.push(nodes[i]); } } return array; } //筛选节点的方法 function getElementList(arr,value){ var arrList=new Array(); for(var i=0,len=arr.length;i<len;i++){ if(arr[i].nodeType==value){ arrList.push(arr[i]); } } return arrList; }
每一個節點都有一個childNodes屬性,其中保存著NodeList物件。 NodeList是一種類別數組對象,用來保存一組有序的節點,可以使用位置來存取這些節點。不過要大家注意的是,雖然我們可以透過方括號來存取對象,且NodeList也有length屬性,但它並不是Array的實例。
當然,我們也可以透過item()方法來存取NodeList中的節點,就像使用方括號一樣,可以進行存取。這兩種無論哪種方式都沒有問題,而且因為方括號的簡單性,所以更受開發人員的青睞。
在此,筆者仍然推薦以上的NodeList轉數組的方法,但是因為在IE8及以下是不支援Array.prototypr.slice.call(soneNode.childNodes,0);這樣的方法,所以我們只能透過枚舉的方式,將NodeList轉換成維數組。 try-catch捕獲錯誤,並手動建立數組。
以上是如何將childNodes傳回的資料轉換維數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!