#javascript #html
#javascript #HTML
Вопрос:
Я создал таймер, который запускается при нажатии кнопки. Я хочу, чтобы таймер останавливался, когда значение time достигает 5, но по какой-то причине он не работает.
let words = document.getElementById("Words");
let wordAr = ["The" , "quick" , "brown" , "fox" , "jumped" , "over" , "the" , "lazy" , "dog"];
let textIn = document.getElementById("Input");
let timer = 0;
let time = document.getElementById("Timer");
let wPM = 0;
let wpm = document.getElementById("WPM");
let text = document.getElementById("text");
words.innerHTML = wordAr.slice(0,9).join(" ");
window.addEventListener("keydown", function(key){
if(key.keyCode == 32){
for (let i=0; i < 1; i ){
wPM =1;
wpm.innerHTML = wPM;
};
};
});
let start = document.getElementById("start");
function incTime(){
timer ;
time.innerHTML = timer;
};
function initTime(){
setInterval(incTime, 1000);
};
if(timer == 5){
console.log("done");
};
Я пытался добавлять .value
и использовать одинарные равенства и тройные равенства, но все попытки тщетны.
Комментарии:
1. Вы должны проверить
if(timer == 5)
внутриinitTime()
2. Не уверен, но внутри функции incTime должен быть оператор If?
3. Я только что попробовал это, и это не сработало, я даже пытался обновить страницу!!
4. Это работает, когда я его вставляю
incTime
спасибо, ребята5. да, это работает, когда вы устанавливаете проверку внутри
incTime()
но из-за причины, которую вы используетеsetInterval()
, он будет продолжать работать через каждые секунды.
Ответ №1:
Добавьте условие таймера с помощью incTime()
функции.И используйте clearInterval()
для прерывания setInterval
var timer = 0;
function incTime() {
timer ;
console.log(timer);
if (timer == 5) {
clearInterval(time_int);
console.log('breaked')
};
};
var time_int = '';
function initTime() {
time_int = setInterval(incTime, 1000);
};
initTime()
Ответ №2:
Проблема в вашем случае заключается в том, что проверка (timer == 5) выполняется только один раз и не проверяется при каждом обновлении значения таймера. Вам нужно проверять значение таймера каждый раз, когда оно обновляется. переместив проверку внутри метода обновления incTime()
let words = document.getElementById("Words");
let wordAr = ["The" , "quick" , "brown" , "fox" , "jumped" , "over" , "the" , "lazy" , "dog"];
let textIn = document.getElementById("Input");
let timer = 0;
let time = document.getElementById("Timer");
let wPM = 0;
let wpm = document.getElementById("WPM");
let text = document.getElementById("text");
words.innerHTML = wordAr.slice(0,9).join(" ");
window.addEventListener("keydown", function(key){
if(key.keyCode == 32){
for (let i=0; i < 1; i ){
wPM =1;
wpm.innerHTML = wPM;
};
};
});
let start = document.getElementById("start");
function incTime(){
timer ;
time.innerHTML = timer;
if(timer == 5){
console.log("done");
}
};
function initTime(){
setInterval(incTime, 1000);
};
Ответ №3:
Вы могли бы использовать clearInterval()
метод.
В вашем случае:
let words = document.getElementById("Words");
let wordAr = ["The" , "quick" , "brown" , "fox" , "jumped" , "over" , "the" , "lazy" , "dog"];
let textIn = document.getElementById("Input");
let timer = 0;
let time = document.getElementById("Timer");
let wPM = 0;
let wpm = document.getElementById("WPM");
let text = document.getElementById("text");
let timerPid= null;
words.innerHTML = wordAr.slice(0,9).join(" ");
window.addEventListener("keydown", function(key){
if(key.keyCode == 32){
for (let i=0; i < 1; i ){
wPM =1;
wpm.innerHTML = wPM;
};
};
});
let start = document.getElementById("start");
function incTime(){
timer ;
time.innerHTML = timer;
};
function initTime(){
timerPid= setInterval(incTime, 1000);
};
if(timer == 5){
clearInterval(timerPid);
};