Javascript加入2个阵列

问题描述:

如何加入2个包含DOM元素的阵列。Javascript加入2个阵列

我想连接2个或更多包含选择框元素的数组。这是我的示例代码。

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

但它不工作。任何提示?

+0

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

+0

我更新了我的答案,这样做对你的工作? – 2012-03-02 17:23:07

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”)中选择它们。

当然,那么你可能会得到不是用于表单的选择框(有时选择框用于导航或其他非标准原因)。

我已经创建了一个新的数组函数,它工作正常。

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的节点列表]的