Я экспериментирую с методом setInterval и clearInterval в Javascript, но у меня возникает проблема. То, что я пытаюсь сделать, состоит в том, что функция будет называться номинально каждые «х» секунд большую часть времени, но через определенные промежутки времени выполняется чаще. Я приложил немного кода, который является незавершенным голой костью того, что у меня есть до сих пор, что является простым доказательством концепции - в этом примере каждые 10 секунд отображаются минуты, иначе между 30 и 40 минутами (как фиктивные значения, чтобы увидеть, могу ли я заставить его работать), дисплей обновляется каждые 1 секунду. Но я понял, что не могу проверить, продолжает ли setInterval и как его снова перезапустить (как переменную myVar).Изменение Javascript setInterval
<!DOCTYPE html>
<html>
<body>
<p id="demo">Just testing...</p>
<script>
var d = new Date();
myVar = setInterval(informUser, 10000);
function informUser()
{
if (d.getMinutes()>30 && d.getMinutes()<40) // every second
{
clearInterval(myVar);
mvVar = setInterval(informUser, 1000);
document.getElementById("demo").innerHTML = d.getMinutes();
}
else // else 10 seconds
{
document.getElementById("demo").innerHTML = d.getMinutes();
}
}
</script>
</body>
</html>
Как я уже сказал, код очень неполный, поскольку я столкнулся с кирпичной стеной! Как только у меня что-то работает, я могу сделать это немного сложнее. EDIT:
Спасибо за ваши комментарии к синтаксису, но это не проблема. Что делает код в данный момент, выводит минуты на экран каждые 10 секунд, пока не достигнут 31 минута прошедшего часа. Затем он останавливает таймер и запускает его с интервалом в 1 секунду. По прошествии 9 минут код останавливается, потому что таймер не запускается.
Что мне хотелось сделать в разделе «else // else 10 seconds», чтобы узнать, имеет ли myVar значение null; если это так, перезапустите таймер на 10 секунд.
Обратите внимание, что первый параметр функции setInterval должен быть ** ссылкой ** на функцию (а не на вызов функции, если только этот вызов не возвращает ссылку на другую функцию). Вы должны использовать 'setInterval (informUser, X)' – Dekel
Спасибо, я изменю его выше (если смогу) – user3713442
Вы можете изменить, но это также ответ на ваш вопрос. Обновите его в своем собственном коде и проверьте. Он должен решить вашу проблему. – Dekel