2012-03-01 75 views
0

如何加入2個包含DOM元素的陣列。Javascript加入2個陣列

我想連接2個或更多包含選擇框元素的數組。這是我的示例代碼。

selectboxes = []; 
for(var i = 0; i < forms.length; i++) 
{ 
selectboxes = selectboxes.concat(forms[i].getElementsByTagName('select')) 
} 

但它不工作。任何提示?

+0

可能重複(http://stackoverflow.com/questions/914783/javascript-nodelist) – 2012-03-01 09:28:54

+0

我更新了我的答案,這樣做對你的工作? – 2012-03-02 17:23:07

回答

2

JavaScript的getElementsByTagName函數不返回數組,它返回一個沒有concat方法的NodeList。

https://developer.mozilla.org/en/DOM/element.getElementsByTagName

看到這個答案:JavaScript NodeList

有關如何把它們放在一個陣列的例子。

我認爲最好的解決辦法是這樣的:

http://jsfiddle.net/4CKRN/

- 更新您的特定代碼 -

forms = document.forms; 
selectboxes = []; 
for(var i = 0; i < forms.length; i++) 
{ 
    selectboxes = selectboxes.concat(Array.prototype.slice.call(forms[i].getElementsByTagName('select'))); 
} 

請記住,如果你只是想獲得的所有選擇框可以跳過從表單中選擇它們,並從document.getElementsByTagName(「select」)中選擇它們。

當然,那麼你可能會得到不是用於表單的選擇框(有時選擇框用於導航或其他非標準原因)。

0

我已經創建了一個新的數組函數,它工作正常。

Array.prototype.merge = function(arr) 
{ 
    var len = this.length; 
    for(var idx = 0; idx < arr.length; idx++) 
    { 
     this[len+idx] = arr[idx] 
    } 
    return this; 
} 

調用諸如

result = arr1.merg(arr2) 
[JavaScript的節點列表]的