当元素准备好以其名称作为数组时如何获取 ElementsByTagName

How to getElementsByTagName when elements are prepared for being an array in their name

我正在尝试获取具有 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');

但在这两种情况下我都以空数组结尾。怎么做到的?

您需要通过属性获取元素,因为 ciudades[] 是 name 属性的值。但是你已经使用了通过标签名方法获取。您可以使用 jquery:

获取它们
$('[name="ciudades[]"]')

如果您想要javascript中的解决方案,请参考

getElementsByTagName 标签名称 工作,例如inputdivspan,而不是 name 属性。

如果你想通过 name 获取这些元素,你可以使用 querySelectorAll:

var list = document.querySelectorAll('input[name="ciudades[]"]');

querySelectorAll 所有现代浏览器都支持,IE8 也支持。

或者您已标记您的问题 jquery:

var $list = $('input[name="ciudades[]"]');

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[]"]')