LINUX.ORG.RU

forms.elements.length

 


0

1

привет всем

есть страница, в ней форма, хочу показать типы всех элементов этой формы

for (var i = 0; i <= document.forms[0].elements.length; i++) {
       document.writeln(document.forms[0].elements[i].type);
}

выводит только первый элемент. если сделать так

for (var i = 0; i <= 5; i++) {
       document.writeln(document.forms[0].elements[i].type);
}

- то же самое. если так

for (var i = 0; i <= document.forms[0].elements.length; i++) {
       document.writeln(i);
}

- снова только первый элемент.

само собой если сделать просто

for (var i = 0; i <= 5; i++) {
       document.writeln(i);
}

то все нормально.

подозреваю элементарную ошибку, но сам что-то не могу осилить, ткните носом, пожалуйста, где туплю


Ответ на: комментарий от Kalashnikov

учебный )

не, элемент не один, кроме того

document.writeln(document.forms[0].elements.length)
показывает 17, где-то так и есть

tanner
() автор топика
Ответ на: комментарий от Kalashnikov

хм, да, валится

Uncaught exception: TypeError: Cannot convert 'document.forms[0]' to object
Error thrown at line 1, column 0 in <anonymous function>(event) in http://localhost/labs/js/3-registration.php:
    for (var i = 0; i <= document.forms[0].elements.length; i++)
если вместо document.writeln юзать alert(), то отрабатывает, но в конце тоже выкидывает
Uncaught exception: TypeError: Cannot convert 'document.forms[0].elements[i]' to object
Error thrown at line 2, column 1 in <anonymous function>(event) in http://localhost/labs/js/3-registration.php:
    alert(document.forms[0].elements[i].type);

tanner
() автор топика
Ответ на: комментарий от tanner

Почитай про события, в частности про load, ready и DomContentLoaded и соответственно про стадии загрузки дома.

alert блокирует, поэтому с ним работает, про это тоже почитай.

Последняя ошибка из-за неправильного условия, надо строгое неравенство (i < ...length), тут можно почитать про индексацию массивов)

Kalashnikov ★★★
()

Скорее всего ты пытаешься это сделать уже после загрузки документа и отрабатывания onload? Тогда хочу тебя разочаровать, в этот момент документ уже закрыт для записи и document.write будет пытаться создать новый, пустой. А на этом новом и пустом на второй итерации цикла формы уже не будет и ты получишь эррор элемент undefined.

BaBL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.