我最近正在做一個計時器對象和一個滴答作用的功能,根據setTimeout循環每秒鐘會打勾。但是,滴答作響沒有延遲。如果你嘗試下面的代碼,你會發現時間編號在幾秒鐘內就增加到了數千。如果有的話,我做錯了什麼?setTimeout不會延遲
<html>
<head>
</head>
<button onclick="startTimer()">Start</button>
<button onclick="stopTimer()">Stop Timer</button>
<button onclick="readTimer()">Read Timer</button>
<script>
function tick(){
console.log("TICK TOCK");
if(this.running == true){
this.time += 1;
console.log("HELLO!");
setTimeout(this.tick(), 1000, $(this));
}
}
function start(){
this.running = true;
this.tick();
}
function read(){
return this.time;
}
function stop(){
this.running = false;
}
function reset(){
if(this.running == false){
this.time = 0;
}else {
this.time = 0;
}
this.tick();
}
function timer(){
this.running = false;
this.time = 0;
this.start = start;
this.read = read;
this.stop = stop;
this.reset = reset;
this.tick = tick;
}
var t = new timer();
function startTimer(){
t.start();
}
function stopTimer(){
t.stop();
}
function readTimer(){
alert("This is the current Timer Reading: " + t.time);
}
</script>
</html>
你逝去的執行功能,而不是一個功能'setTimeout'。做'setTimeout(this.tick.bind(this),1000)'。 – trincot
它的工作原理!非常感謝。沒有你的幫助,我不會解決這個問題。 –