GetElementsByName с массивом, подобным имени

я часто использую это обозначение, когда я называю свои элементы управления, чтобы получить массив в POST или GET.

<input name="color[1]" type="text" />
<input name="color[2]" type="text" />
<input name="color[3]" type="text" />

так что в моих сценариях я могу сделать

<?php $data=$_GET["color"]; 
for each ($color as $key=>$value) {
   doSomething();
} ?>

Часто бывает, что мне нужно вернуть эти идентификаторы в javascript, но я не могу их получить, поэтому я часто добавляю идентификатор к каждому элементу в html, как этот

<input name="color[3]" id="color_3" type="text" />

чтобы я мог использовать document.getElementsById('color_3')

Вместо этого я хотел бы найти способ использовать document.getElementsByName(color[3])... но я не могу заставить его работать.

Любая помощь?


person AndreaBogazzi    schedule 06.08.2013    source источник


Ответы (2)


<input name="color[3]" id="color_3" type="text" />

var element = document.getElementsByName("color[3]");

alert(element[0].id);

Он отлично работает. Вы должны иметь в виду, что Тип возвращаемого значения – это массив элементов, а не один элемент.

person Prasath K    schedule 06.08.2013
comment
Я попробую еще раз. я пытался, пытался и пытался с консолью firefox.... Хорошо, это работает... я могу поклясться, что сегодня утром, в моей комнате, не работало.. Если есть шанс, я могу написать ‹color[3]›xxx‹/color[ 3]› в каком-то xml? я не думаю, что смогу написать имя тега xml с [внутри. - person AndreaBogazzi; 06.08.2013
comment
@AndreaBogazzi Вы можете написать xml таким образом. См. Здесь: jsfiddle.net/xE6bh - person Prasath K; 06.08.2013
comment
я получаю неправильный формат, если я пишу так... ali_id› ‹ali_descrizione›‹va›Прошутто‹/va›‹/ali_descrizione› ‹ali_ordine›‹va›0.00‹/va›‹/ali_ordine› ‹ali_prezzo›‹va›6.00‹/va›‹/ali_prezzo› ‹ali_listino› ‹ck›N‹/ck›‹/ali_listino›‹ing_id[1]›‹ck›S‹/ck›‹/ing_id[1]›‹ing_id[2]›‹ck›S‹/ck›‹/ing_id [2]›‹ing_id[8]›‹ck›S‹/ck›‹/ing_id[8]›‹/myform›‹/cose› - person AndreaBogazzi; 06.08.2013
comment
Да, я пытался.. Проблема из-за ']', но не знаю причину - person Prasath K; 06.08.2013
comment
Я вижу, что это не разрешено в спецификациях xml. я решил сделать ‹ing_id index=2›xxx‹/ing_id› и написать немного javascript, который проверяет, есть ли индекс атрибута, а затем изменяет имя тега +'['+key +']', и это работает. - person AndreaBogazzi; 06.08.2013

Если вам нужны все входные данные цвета, вы можете использовать querySelectorAll вместо запроса атрибута имени:

document.querySelectorAll("input[name^='color[']")

Это просматривает документ для всех тегов input, чей атрибут имени начинается с color[. Вот скрипт для этого.

Если вы хотите только color[3], вы можете использовать:

var color3 = document.getElementsByName("color[3]");
console.log(color3[0]);
person CodingIntrigue    schedule 06.08.2013