Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Текстовое поле (https://javascript.ru/forum/dom-window/36076-tekstovoe-pole.html)

Nicki 03.03.2013 15:07

Текстовое поле
 
Что-то совсем я запуталась, если прямо записать

document.fr.ans1.value;
document.fr.ans2.value;

То выводит значения.

А в цикле не выводит.

<input type="text" name="ans1" size="25" value="" />                           
<input type="text" name="ans2" size="25" value="" />  

for(k=1; k<3; k++) {   
alert(document.getElementsByName("ans"+k).value); 
alert(document.fr.ans[k].value);
alert(document.getElementsByName("ans"+k).length); 
alert(document.fr.ans[k].length);
}

danik.js 03.03.2013 15:15

document.getElementsByName возвращает список элементов (NodeList), похожий на массив.
нужно так:
<form name="fr">
    <input type="text" name="ans1" size="25" value="" />                          
    <input type="text" name="ans2" size="25" value="" /> 
 </form>
<script>
for(var k=1; k<3; k++) {  
    alert(document.getElementsByName("ans"+k)[0].value);
    alert(document.fr['ans'+k].value);
    alert(document.getElementsByName("ans"+k).length);
    alert(document.fr['ans'+k].length);// ссылается на первый элемент ans+k, так что undefined
}
</script>

Nicki 03.03.2013 15:47

Большое спасибо, наконец исправила эту ошибку.


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