Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Одинаковые имена свойств DOM-элементов (https://javascript.ru/forum/misc/30554-odinakovye-imena-svojjstv-dom-ehlementov.html)

dump 08.08.2012 12:12

Одинаковые имена свойств DOM-элементов
 
Вот html код:

<form name="f1"><input type="button" value="press me"></form>
<form name="f1"><input type="button" value="press me"></form>

При этом нижеследующий JavaScript-код выводит два раз по f1:

var property;
for (property in document.forms)
alert(property);

Почему? Разве может быть два свойства с одинаковым именем в объекте? И ведь свойство f1 должно было превратиться в массив....

bes 08.08.2012 13:05

Что есть document.forms - коллекция форм в документе, вот свойства этой коллекции и выводятся (причём есть отличия в разных браузерах)

<form name="f1"><input type="button" value="press me"></form>
<form name="f1"><input type="button" value="press me"></form>

<script>
window.onload = function () {
	alert(document.forms.f1.innerHTML)

	var property;
	for (property in document.forms) {
		alert(property + '; ' + document.forms[property]);
	}
}
</script>


Цитата:

Сообщение от dump
И ведь свойство f1 должно было превратиться в массив....

откуда такая информация
f1 - значение атрибута name формы (должно быть уникальным в пределах документа), которое становится свойством коллекции document.forms, по которому можно обратиться к этой форме.
Возможно не факт, в доках пока не нахожу, где об этом написано.
https://developer.mozilla.org/en-US/...document.forms
https://developer.mozilla.org/en-US/...HTMLCollection
http://www.w3.org/TR/DOM-Level-2-HTM...tml#ID-1689064 п.1.4

PS: И нужно правильно объяснить undefined.

nerv_ 08.08.2012 13:12

Цитата:

Сообщение от bes
откуда такая информация, f1 - значение

отсюда
Цитата:

Может быть несколько элементов с одинаковым именем. В таком случае form.elements[name] вернет коллекцию элементов

bes 08.08.2012 13:36

Ну там речь про элементы внутри формы, а не про саму коллекцию форм
PS: но вторая часть фразы не точна, попробую доработать


Часовой пояс GMT +3, время: 23:22.