今天寫組件的時候遇到一個問題,就是當我需要對獲取到的對象列表進行刪減的時候,發現沒有合適的方法,比如:
//獲取圖片列表
var imgs = document.getElementsByTagName("img");
這個列表可以用imgs[0]的數組方法訪問元素,但是不能用數組的方法進行編輯.
shift()等數組方法無效
removeChild()無效
delete imgs[0]無效
從網上查了查有個方法可以把這對象列表返回成數組:
aImg = Array.prototype.slice.call(imgs);
但是這方法不支持ie,於是就有了現在的最終方法:
function convertToArray(nodes){ var array = null; try{ array = Array.prototype.slice.call(nodes,0); }catch(ex){ array = []; for(var i = 0,len =nodes.length; i < len; i++){ array[i] = nodes[i]; } } return array; }
w3c通過try的方式來實現,因為IE的節點列表實現為一個com對象!所以。。。。
