我正在尝试使用javascript或jQuery获取一个元素数组,当我提交表单时,我想要的元素是一个具有相同名称的集合。
代码更容易理解:
<form>
<!-- ... -->
<input name='ciudades[]' id="cb_0" type='checkbox' style="display: none" checked="checked" value="ALICANTE_AER">ALICANTE_AER</input>
<input name='ciudades[]' id="cb_1" type='checkbox' style="display: none" checked="checked" value="MALAGA_AER">MALAGA_AER</input>
<input name='ciudades[]' id="cb_2" type='checkbox' style="display: none" checked="checked" value="MALLORCA_AER">MALLORCA_AER</input>
<input name='ciudades[]' id="cb_3" type='checkbox' style="display: none" checked="checked" value="VALENCIA_AER">VALENCIA_AER</input>
<!-- ... -->
</form>
我试图用这两种方式得到一个名为'ciudades []'的所有元素的数组:
var cb_ciudades = document.getElementsByTagName('ciudades[]');
和
var cb_ciudades = document.getElementsByTagName('ciudades');
但在两种情况下我都以空数组结尾。怎么可能呢?
答案 0 :(得分:2)
getElementsByTagName
通过标记名称工作,例如input
或div
或span
,而不是name
属性。
如果您想通过name
获取这些元素,可以使用querySelectorAll
:
var list = document.querySelectorAll('input[name="ciudades[]"]');
所有现代浏览器以及IE8都支持 querySelectorAll
。
或者当您标记了问题jquery
时:
var $list = $('input[name="ciudades[]"]');
答案 1 :(得分:1)
您需要按属性获取元素,因为ciudades[]
是name属性的值。但是你使用了get by tag name方法。你可以使用jquery获取它们:
$('[name="ciudades[]"]')
如果您想在javascript中使用该解决方案,请参阅https://stackoverflow.com/a/15342661/1719752
答案 2 :(得分:0)
<强> javascipt的强>
var inputs = document.getElementsByTagName('input');
var myElements = [];
for(var i =0; i < inputs.length; i++){
if(inputs[i].getAttribute('name') == 'ciudades[]'){
myElements.push(inputs[i]);
}
}
<强>的jQuery 强>
$('[name="ciudades[]"]')