Счетчик снова добавляет 1 после попытки сброса - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь сбросить счетчик, если тест не прошел. Моя функция fail() вызывается, когда что-то идет не так после нажатия кнопки. Эта же кнопка используется для активации счетчика, при сбое счетчик принимает значение 1 вместо 0. Есть ли способ сбросить счетчик без повторного добавления последнего щелчка?

Это мой пример кода:

$(document).ready(() => {
    $('#btn-check').click(() => {
        if (checkAnimal(counter)) {
            // Do something.
        }
        else {
            fail(); // Reset counter.
        }

        counter++; // Counter adds 1 again.
    })
})

var counter = 0;

const checkAnimal = (counter) => {
    if (counter < 1) {
        // First animal.
    }
    else {
        // Other animals (different treatment).
    }
}

const fail = () => {
    counter = 0;
}
<script src="https://code.jquery.com/jquery-3.5.0.js"
        integrity="sha256-r/AaFHrszJtwpe+tHyNi/XCfMxYpbsRg2Uqn0x3s2zc=" crossorigin="anonymous">
        </script>

1 Ответ

1 голос
/ 12 июля 2020

Ваша проблема в том, что counter++ находится за пределами оператора if / else, поэтому после выполнения else (функция fail ()) ваш код будет запущен еще раз counter++.

Чтобы этого избежать, вы придется заменить counter ++ на один из операторов if.

Также вы ничего не возвращаете в функции fail().

$(document).ready(() => {
    $('#btn-check').click(() => {
        if (checkAnimal(counter)) {
            // Do something.
        }
        else {
            fail(); // Doesn't return anything.
        }
        // Counter is outside of statement 
        counter++;
    })
})
...