@MyNamee

Почему переменная при срабатывании инкремента не увеличивает своё значение?

Привет, я новичок, изучаю самостоятельно JS и прошу помощи.
Нужно чтобы при срабатывании события (клик мыши по кнопке) создавался новый input, и у каждого следующего input класс был на единицу больше (у первого: .input-1, у второго: .input-2 и т.д.). Но почему-то счётчик (count) не увеличивается на единицу при каждом срабатывании события. Прошу помочь.
Код JavaScript
var buttonAdd = document.getElementById("button-add");
buttonAdd.addEventListener("click", function() {
    var todolistChilds = document.getElementById('todolist').getElementsByClassName('input').length;
    if(todolistChilds < 10) {
        var count = 1;
        var newInput = document.createElement('input');
        newInput.classList.add('input','input-' + ++count);
        todolist.appendChild(newInput);
    }
    else {
        alert('Ошибка');
    }
});
  • Вопрос задан
  • 159 просмотров
Решения вопроса 3
Вынеси var count = 1; после var buttonAdd = document.getElementById("button-add");
https://learn.javascript.ru/functions-closures
Ответ написан
SnaIP
@SnaIP
Front-end разработчик
Сделайте через замыкание или property функции или по корявому вот так например:

var buttonAdd = document.getElementById("button-add");
var count = 1;
buttonAdd.addEventListener("click", function() {
    var todolistChilds = document.getElementById('todolist').getElementsByClassName('input').length;
    if(todolistChilds < 10) {
        var newInput = document.createElement('input');
        newInput.classList.add('input','input-' + ++count);
        todolist.appendChild(newInput);
    }
    else {
        alert('Ошибка');
    }
});


// как то так, код не проверял
Ответ написан
Комментировать
zxscv
@zxscv
count у вас - локальная переменная которая после завершения функции теряется. Надо объявить var count = 1; в глобальном контексте
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 10:42
150000 руб./за проект
25 апр. 2024, в 10:41
2000 руб./за проект
25 апр. 2024, в 10:25
2000 руб./за проект