Может ли кто-нибудь помочь мне разобраться с ошибкой в моем коде для начинающих? Я пытаюсь добавить элемент списка в список и пытаюсь изменить идентификатор того, какой список я добавляю в javascript. Заранее спасибо.
<html>
<head>
<script>
window.onload = init;
function init() {
var button = document.getElementById("submit");
button.onclick = changeDiv;
}
function changeDiv() {
var counter=1
var name = "ul";
var textInput = document.getElementById("textInput");
var userInput = textInput.value;
alert("adding " + userInput);
var li = document.createElement("li");
li.innerHTML = userInput;
var ul = document.getElementById("ul" + loop());
ul.appendChild(li);
}
function loop() {
return counter;
if (counter==3){
counter==0;
}
counter++;
}
</script>
</head>
<body>
<form id="form">
<input id="textInput" type="text" placeholder="input text here">
<input id="submit" type="button">
</form>
<ul id="ul1">
</ul>
<ul id="ul2">
</ul>
<ul id="ul3">
</ul>
</body>
я думаю, что вы хотите, это один из них:
counter
глобальным (yuk)counter
тамcounter
в loop()
когда вы его вызываете.loop()
в changeDiv()
.Я думаю, вы хотите № 2, хотя я пошатнул его несколькими исправлениями в вашем коде:
Причина, по которой я пошел с № 2:
Ответ №4 аналогичен тому, что он создаст закрытие для changeDiv и loop, благодаря чему оба они имеют доступ к тому, что им нужно. Однако я не хотел слишком сильно менять существующие логические блоки, чтобы остановить постепенное обучение. Но можно определенно сделать аргумент для loop()
(который на самом деле не является циклом, а скорее сеттер), заключенного в changeDiv()
хотя вы, вероятно, удалите отдельный вызов функции в этой точке и еще больше интегрируете код,
counter
По сути, вам необходимо:
counter
в глобальной области (loop()
не может получить к нему доступ в противном случае)loop()
, оператор return должен быть LAST. Ничего после этого не будет выполнено.Я немного изменил логику, и последний код:
window.onload = init;
var counter=1;
function init(){
var button = document.getElementById("submit");
button.onclick = changeDiv;
}
function changeDiv(){
var name = "ul";
var textInput = document.getElementById("textInput");
var userInput = textInput.value;
var id = "ul" + loop();
alert("adding " + userInput + " to " + id);
var li = document.createElement("li");
li.innerHTML = userInput;
var ul = document.getElementById(id);
ul.appendChild(li);
}
function loop(){
var tmp = counter++;
if (counter==4){
counter=1;
}
return tmp;
}
Обратите внимание на изменения в функции loop()
.
Я также изменил changeDiv()
чтобы отобразить идентификатор списка в предупреждении.
loop()
неверна. Что это должно сделать?