Javascript加入2个阵列
问题描述:
如何加入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://*.com/questions/914783/javascript-nodelist) – 2012-03-01 09:28:54
我更新了我的答案,这样做对你的工作? – 2012-03-02 17:23:07