【发布时间】:2012-03-01 19:29:25
【问题描述】:
我正在尝试获取特定 div 中的所有表单元素,并使用数组 concat() 方法将它们组合成一个数组:
var div_id = 'some_div_id'; // in real life this is passed as a function parameter
var child_inputs = document.getElementById(div_id).getElementsByTagName('input');
var child_textareas = document.getElementById(div_id).getElementsByTagName('textarea');
var child_selects = document.getElementById(div_id).getElementsByTagName('select');
var field_elements = child_inputs.concat(child_textareas, child_selects); // this doesnt work?
但是脚本在最后一行失败了,我不知道为什么。我不能使用 .childNodes 因为传递的 div_id 不是直接父级。
【问题讨论】:
-
数组结构必须相同才能使用 concat。这些元素选择器产生的结果并非如此。这些不是简单的列表——它们是对象。
-
你可以:
var elems = document.getElementById( div_id ).querySelectorAll( 'input, textarea, select' );
标签: javascript arrays concat getelementsbytagname