当元素准备好以其名称作为数组时如何获取 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
按 标签名称 工作,例如input
或 div
或 span
,而不是 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[]"]')
我正在尝试获取具有 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
按 标签名称 工作,例如input
或 div
或 span
,而不是 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[]"]')