Я создаю программу, которая либо считает вниз, либо вверх, и у меня она работает, однако мне нравится нажимать обратный отсчет в середине обратного отсчета или наоборот, и мне нравится, чтобы счетчик останавливался и считал вверх или наоборот. как мне этого добиться? большое спасибо за твою помощь :)
function myFunctionUp() {
var Timer = setInterval(function () {
i++;
document.getElementById("mydata").textContent = i;
if (i >= 21)
clearInterval(Timer);
if (i == 21){
document.getElementById("mydata").textContent = "Boom-up!";
}
}, 1000);
}
function myFunctionDown() {
var Timer = setInterval(function () {
i--;
document.getElementById("mydata").textContent = i;
if (i <= 0)
clearInterval(Timer);
if (i == 0){
document.getElementById("mydata").textContent = "Boom-down";
}
}, 1000);
}
загрузил мой код
Используйте переменную, чтобы отслеживать способ подсчета. Когда кнопка нажата, инвертируйте значение переменной:
let countDown = 10;
let increment = -1;
function count() {
countDown += increment;
document.getElementById('container').innerText = countDown;
setTimeout(() => count(), 1000);
}
document.getElementById('btn').addEventListener('click', function () {
increment = -increment;
});
count();
Рабочий стекблиц здесь
Обычно вы никогда не "берете под свой контроль" выполнение другого метода. Когда вы хотите сделать это, логика должна быть инвертирована. Сама функция должна спросить, должна ли она продолжаться.
В качестве примера: возьмем функцию, которая работает в бесконечном цикле, которую вы хотите остановить по требованию. В некоторых языках вы можете запускать некоторый код в потоке и прерывать поток по требованию. Но даже если это возможно, останавливать какой-либо код в середине его выполнения — плохая идея.
Лучший способ сделать это — создать «Следует ли продолжить?» фрагмент кода в конце итерации. Он может читать переменную или вызывать метод и т. д. Когда вы хотите остановить итерацию, вам просто нужно установить эту переменную, и вы знаете, что бесконечный цикл любезно остановится в конце текущей итерации.
Я просто хочу остановить функцию и включить другую, когда я нажимаю обе кнопки, я получаю число, застрявшее в бесконечном цикле.
Пожалуйста, поделитесь фрагментом кода для лучшего понимания.