当元素准备成为其名称中的数组时,如何获取元素

时间:2015-05-21 09:55:54

标签: javascript jquery getelementsbytagname

我正在尝试使用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');

但在两种情况下我都以空数组结尾。怎么可能呢?

3 个答案:

答案 0 :(得分:2)

getElementsByTagName通过标记名称工作,例如inputdivspan,而不是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[]"]')