#javascript #for-loop #dom
#javascript #для цикла #dom
Вопрос:
Использование DOM — Кнопка будет добавлять элементы в список при нажатии, но также необходимо увеличить целое число внутреннего текста [i] каждого добавленного элемента списка. Я не знаю, как увеличить его.
Я пытался добавить счетчик внутри функции insertItem(), а также внутри button.addEventListener, но безуспешно. Пример счетчика:
let clickCount = 0;
clickCount :
HTML
<body>
<button class='button'>Click to add new list item</button>
</body>
JavaScript
let button = document.querySelector('button');
document.body.appendChild(button);
button.className = 'button';
button.addEventListener('click', insertItem);
function insertItem() {
let list = document.createElement('ul');
document.body.appendChild(list);
for (let i = 1; i === 1; i ) {
let item = document.createElement('li');
let text = document.createTextNode('This is list item ' [i]);
item.appendChild(text);
list.appendChild(item);
document.getElementsByName('item').innerHTML = 'This is list item ' [i 1];
}
}
Я хочу, чтобы внутренний текст (‘Это элемент списка’ [i]) увеличивался на 1 при каждом нажатии кнопки.
На данный момент мой код функционирует, но [i] не увеличивается; он остается равным ‘1’ при каждом нажатии / добавлении.
Ответ №1:
У вас есть несколько проблем:
-
Ваша кнопка уже является частью вашего HTML-кода — нет необходимости добавлять ее снова в начале.
-
Вы используете цикл for, но он не зацикливается и вместо этого запускает ваш код только один раз (таким образом, в нем нет необходимости)
-
Вы создаете несколько неупорядоченных списков (
ul
тегов), когда вместо этого вы можете создать один вне своей функции и добавлять элементы (li
теги) в этотul
тег.
Как только вы решите эти проблемы, вы можете создать глобальную переменную с именем clickCounter
и использовать ее в качестве числа в конце каждого из ваших элементов. Каждый раз, когда вы добавляете элемент в свой список, вы можете увеличивать его, clickCounter
используя clickCounter
. Я сделал clickCounter
глобальный, как если бы он был внутри вашей функции, он будет сбрасываться при каждом нажатии вашей кнопки, что не то, что вы хотите.
Смотрите рабочий пример ниже:
let button = document.querySelector('button.button'); // get the button element with the button class
button.addEventListener('click', insertItem);
let clickCounter = 1;
let list = document.createElement('ul');
document.body.appendChild(list);
function insertItem() {
let item = document.createElement('li');
let text = document.createTextNode('This is list item ' clickCounter);
item.appendChild(text);
list.appendChild(item);
clickCounter ;
}
<button class='button'>Click to add new list item</button>