2015-05-21 3 views
1

Я пытаюсь получить массив элементов с javascript или jQuery, когда элементы, которые я хочу, представляют собой набор с тем же именем, подготовленный для того, чтобы быть массивом после того, как я отправьте форму.Как getElementsByTagName, когда элементы подготовлены для того, чтобы быть массивом в их имени

Гораздо более понятно с кодом:

<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'); 

но я заканчиваю пустым массивом в обоих случаях. Как это можно сделать?

ответ

2

getElementsByTagName работ по имени тега, например, input или div или span, а не атрибут name.

Если вы хотите, чтобы получить эти элементы по их name, вы можете использовать querySelectorAll:

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

querySelectorAll поддерживается всеми современными браузерами, а также IE8.

Или, как вы добавили ваш вопрос jquery:

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

спасибо за разъяснение, поэтому я полностью неправильно понял метод getElementsByTagName: O – vivoconunxino

1

Вам нужно получить элементы по атрибуту, так как ciudades[] - значение атрибута name. однако вы использовали метод get name. Вы можете получить их с помощью JQuery:

$('[name="ciudades[]"]') 

Если вы хотите решение в JavaScript, то обратитесь https://stackoverflow.com/a/15342661/1719752

+0

JQuery это нормально, спасибо – vivoconunxino

+0

@vivoc onunxino: рад, что это помогает :) –

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