О javascript и DOM, это соответствует стандартам? - PullRequest
1 голос
/ 01 октября 2009
<form name='form1'>
   <select name='sel1'></select>
</form>

<script>
   document.form1.sel1 ...  //access element by it's name attribute, is this standard?
</script>

Ответы [ 3 ]

5 голосов
/ 01 октября 2009

Правильный синтаксис:

document.forms.form1.elements.sel1

или

document.forms["form1"].elements["sel1"]
4 голосов
/ 01 октября 2009

Нет, в HTML уровня 2 DOM не указано, что HTMLDocument получит именованные формы в качестве прямых свойств или что HTMLFormElement получит именованные элементы в качестве прямых свойств.

Однако это поведение восходит к самой ранней реализации JavaScript (в Netscape 2) и с тех пор было скопировано каждым браузером, так что это одна из тех функций «DOM Level 0», которые формально не признаны ни одним органом стандартизации. безусловно, де-факто стандарт.

Я все еще не рекомендовал бы использовать его, потому что будущие браузеры могут вводить новые свойства в HTMLDocument и HTMLFormElement (как это часто делали браузеры в прошлом, особенно в HTMLDocument), чьи имена могут конфликтовать с вашими name атрибутами. Это гораздо, гораздо реже происходит с объектом HTMLCollection, используемым свойствами document.forms и form.elements.

Еще лучше поставить id на все, что вы хотите сослаться, оставьте name off <form> и используйте однозначный document.getElementById().

0 голосов
/ 01 октября 2009

Почему бы не сделать document.getElementsByName('sel1')?

В одном и том же документе могут быть другие элементы с таким именем (например, несколько форм, содержащих одинаковые наборы элементов управления) - Дэвид Дорвард 31 мин. Назад

Вот почему я всегда использую id вместо name. Я бы порекомендовал использовать массив forms или присвоить элементу id для облегчения поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...