#javascript
#javascript
Вопрос:
Я использую setInterval
для проверки каждую секунду document.hasFocus()
, поэтому каждую секунду он возвращает true
или false
.
setInterval(function() {
console.log(document.hasFocus());
}, 1000);
Когда возврат true
равен или больше 15, я хотел бы что-то сделать. Я написал приведенный ниже код (который, очевидно, не работает), чтобы было легче понять, чего я хочу достичь.
if (document.hasFocus()) ≥ 15 {
do something
}
Кто-нибудь может мне помочь с этим?
Ответ №1:
document.hasFocus() возвращает логическое значение, а не число. Таким образом, вы можете использовать счетчик и увеличивать его каждый раз, когда document.hasFocus() возвращает true. Затем вы можете протестировать счетчик.
Ответ №2:
Насколько я вижу, вы просто хотите посчитать 15 раз, прежде чем вызывать какую-либо функцию или выполнять какую-либо логику, переменная, которая отвечает за подсчет, представляет состояние вашего приложения. Итак, мы назовем это count
let count = 0;
затем мы просто увеличиваем количество, пока условие выполняется каждую секунду, пока, наконец, мы не остановим интервал, когда условие выполнено
let intervalToken = setInterval(function checkDocument(){
if(document.hasFocus()){
count = count 1;
if(count > 15){
clearInterval(intervalToken); // stop intervale here
callMyFunction(); // call your function here
}
}
}, 1000)
Комментарии:
1. Теперь я понял, что мне действительно нужен был только оператор «===». «>=» или «>» выполняет функцию каждую секунду (в зависимости от интервала времени). Я адаптировал это, и оно работало так, как должно. Спасибо 🙂
Ответ №3:
Просто добавьте счетчик, подобный этому:
let counter = 0;
if (document.hasFocus() amp;amp; counter >= 15) {
alert('you did it!');
}
Ответ №4:
Вам просто нужна переменная для подсчета количества раз document.hasFocus()
.
let focusCount = 0;
setInterval(() => {
focusCount = document.hasFocus() ? focusCount 1 : focusCount;
if (focusCount >= 15) {
console.log(focusCount);
}
}, 1000);