AbhayPrakash Ответов: 2

Почему этот код javascript печатает только первую запись списка ?


Я новичок в javascript. Я пытался написать код, который принимает входные данные от пользователя в текстовых полях . Я хотел захватить входные данные в массив, поэтому я искал метод в интернете. У меня есть метод document.getElementsByName("name"), который возвращает HTML-коллекцию всех элементов с этим именем. Я написал сценарий для использования этой функции, но, как ни странно, он просто печатает только первое значение в списке. Функция length показывает мне правильную длину , то есть 3, но печатается только первое значение. Любая помощь будет оценена по достоинству. Вот код:

<html>
<head>
<title>Test</title>
<script type="text/javascript">
function fun(){
		var list = document.getElementsByName("array");
		document.write(list[0].value+"<br>");
		document.write(list[1].value+"<br>");
		document.write(list[2].value+"<br>");
		
}
</script>
</head>
<body>
<input type="text" name="array"><br>
<input type="text" name="array"><br>
<input type="text" name="array"><br>
<input type="button" value="go" onclick="fun()">
</body>
</html>


Что я уже пробовал:

Я пробовал печатать длину, а также отдельные элементы списка один за другим. Все они работают. Но когда я хочу напечатать все значения сразу, он просто печатает первое значение

2 Ответов

Рейтинг:
0

Richard Deeming

Проверьте консоль ошибок в вашем браузере, и вы увидите проблему:

TypeError: list[1] is undefined


Как только вы используете document.write, все содержимое документа заменяется тем, что вы написали.
Примечание: при записи document. write в поток документов вызов document.write в закрытом (загруженном) документе автоматически вызывает document.open, который очистит документ.


Очистка документа уничтожает элементы на нем, поэтому вы больше не можете читать значения входных данных.

Вам нужно будет прочитать значения до запись в документ:
function fun(){
    var list = document.getElementsByName("array");
    
    var values = [];
    for (var i = 0; i < list.length; i++){
        values.push(list[i].value);
    }
    
    document.write(values.join("<br />"));
    document.close();
}


Рейтинг:
0

Jameel VM

Вот рабочий Планкер. Когда вы используете document. write, он перезапишет Предыдущее значение.


Рабочий Плунжер
[^]

Руководителей это помогает