2012-03-02 5 views
0

Вы можете получить HTML элементы, как такатрибут Name с JavaScript

document.forms[0].elementName 

Однако что, если более чем один элемент обмена, что имя, не что создает конфликт в JavaScript? Или я должен использовать только идентификаторы. Спасибо.

Радио кнопки требуют одинаковое имя

+2

Он будет возвращать массив элементов, если их больше одного. –

+0

Если имя не является частью массива ('name =" foo [] "'), это также вызовет проблему с вашим HTML. Можете ли вы разместить дополнительный код, чтобы мы могли видеть, с чем вы работаете? – SenorAmor

+0

Diodeus я должен будет использовать элементы [] коллекции? или elementName вернет массив? Спасибо – Marin

ответ

0

нет никакого конфликта, так как это прекрасно иметь несколько элементов с таким же именем (например, думает, что группа радиобазы, имеющие одно и то же имя), и в этом случае ссылка не является единственным узлом, а набором узлов

В любом случае, если вы обращаетесь к элементам на id, вы можете избежать любых возможных проблем (так как они должны быть уникальными на странице)

+0

Мне пришлось выбрать один ответ, однако хотелось бы упомянуть, что Диодеус дал мне ответ в качестве комментария. Недопустимая ссылка заключалась в том, что она возвращает «сборку», если более одного элемента имеет это имя. – Marin

+0

@Marin Обратите внимание, что вы можете перенести другие ответы, которые помогли вам, даже если вы можете принять только один ':)'. –

0

Это не конфликт, но вы должны использовать уникальные имена для различных входов или групп (и да, Diodeus я имею в виду радиокнопок) внутри одной и той же форме.

У вас могут быть элементы с одинаковым именем в одной форме, и результат вашего выражения будет массивом элементов с таким же именем, но, как вы заявили, это путает.

Взгляните на этот пример: http://jsfiddle.net/gion_13/J6yJr/ (посмотрите на консоль);

Вы должны использовать все, с чем вам удобнее; вы можете использовать имена, идентификаторы или любые другие селекторы, пока они работают, и они имеют смысл. Это действительно зависит от структуры разметки html и стиля кодирования.

Ex: какой из следующих вы использовали бы?

document.getElementById('e-mail'); 
document.getQuerySelectorAll('#e-mail[type=email]'); 
document.forms[0]['e-mail'][n]; 
+2

Как насчет переключателей? Они не будут работать, если у каждого есть уникальное имя. –

0

следующий даст вам своего рода массив (нодлист) эти элементы:

document.getElementsByName("name") 
0

Он не применяется даже к вашему коду, который возвращает имя элемента для входящего в него элемента DOM. Там не может быть «конфликта», его имя - его имя.

Если вы documentgetElementsByName("myname");, я отложить до MDN:

Возвращает список элементов с заданным именем в HTML-документе.

Ключ «список»; если имеется более одного соответствия, он вернет список всех совпадающих.

Смежные вопросы