如何加入2個包含DOM元素的陣列。Javascript加入2個陣列
我想連接2個或更多包含選擇框元素的數組。這是我的示例代碼。
selectboxes = [];
for(var i = 0; i < forms.length; i++)
{
selectboxes = selectboxes.concat(forms[i].getElementsByTagName('select'))
}
但它不工作。任何提示?
如何加入2個包含DOM元素的陣列。Javascript加入2個陣列
我想連接2個或更多包含選擇框元素的數組。這是我的示例代碼。
selectboxes = [];
for(var i = 0; i < forms.length; i++)
{
selectboxes = selectboxes.concat(forms[i].getElementsByTagName('select'))
}
但它不工作。任何提示?
JavaScript的getElementsByTagName函數不返回數組,它返回一個沒有concat方法的NodeList。
https://developer.mozilla.org/en/DOM/element.getElementsByTagName
看到這個答案:JavaScript NodeList
有關如何把它們放在一個陣列的例子。
我認爲最好的解決辦法是這樣的:
- 更新您的特定代碼 -
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」)中選擇它們。
當然,那麼你可能會得到不是用於表單的選擇框(有時選擇框用於導航或其他非標準原因)。
我已經創建了一個新的數組函數,它工作正常。
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的節點列表]的
可能重複(http://stackoverflow.com/questions/914783/javascript-nodelist) – 2012-03-01 09:28:54
我更新了我的答案,這樣做對你的工作? – 2012-03-02 17:23:07