2016-01-12 72 views
0
var button1 = document.getElementById("start"); 
var button2 = document.getElementById("stop"); 
var timegraph = document.getElementById("ceas"); 
var time = 0; 
var ResetStart = 0; 
function Start(){ 
    if (ResetStart==0) { 
     ResetStart=1; 
     Running(); 
     button1.innerHTML="Pause"; 
    } 
    else { 
     ResetStart=0; 
     button1.innerHTML="Resume"; 
     clearInterval(myInterval); 
    } 
} 
function Reset(){ 
    time = 0; 
    ResetStart = 0; 
    button1.innerHTML="Start"; 
    timegraph.innerHTML="00:00:00:00"; 
} 
function OnGoing(){ 
    time++; 
    var hours = Math.floor(time/100/60/60); 
    var minutes = Math.floor(time/100/60 % 60); 
    var seconds = Math.floor(time/100 % 60); 
    var hundreds = Math.floor(time/10 % 10); 
    var thousands = time % 10; 
    if (hours<10){ 
     hours = "0" + hours; 
    } 
    if (minutes<10) { 
     minutes = "0" + minutes; 
    } 
    if (seconds<10) { 
     seconds = "0" + seconds; 
    } 
    timegraph.innerHTML=hours + ":" + minutes + ":" + seconds + ":" + hundreds + thousands; 
} 
function Running(){ 
    if (ResetStart==1){ 
     var myInterval = setInterval (OnGoing , 10); 
    } 
    else { 
     timegraph.innerHTML="00:00:00:00"; 
    } 
} 

此代码应该是一个秒表。问题是clearInterval不起作用。控制台中出现错误,当我第二次按下ID时:“start”是:Uncaught ReferenceError:myInterval未定义。当我按下第二次按钮时,代码秒表应该停止。clearinterval不起作用

回答

5

这是因为myInterval定义在Running下。删除var并将其定义在Running之外。

0

MyInterval只存在于函数中。把var MyInterval放在函数外面。

var button1 = document.getElementById("start"); 
var button2 = document.getElementById("stop"); 
var timegraph = document.getElementById("ceas"); 
var time = 0; 
var ResetStart = 0; 
var myInterval; 

function Start(){ 
    if (ResetStart==0) { 
     ResetStart=1; 
     Running(); 
     button1.innerHTML="Pause"; 
    } 
    else { 
     ResetStart=0; 
     button1.innerHTML="Resume"; 
     clearInterval(myInterval); 
    } 
} 
function Reset(){ 
    time = 0; 
    ResetStart = 0; 
    button1.innerHTML="Start"; 
    timegraph.innerHTML="00:00:00:00"; 
} 
function OnGoing(){ 
    time++; 
    var hours = Math.floor(time/100/60/60); 
    var minutes = Math.floor(time/100/60 % 60); 
    var seconds = Math.floor(time/100 % 60); 
    var hundreds = Math.floor(time/10 % 10); 
    var thousands = time % 10; 
    if (hours<10){ 
     hours = "0" + hours; 
    } 
    if (minutes<10) { 
     minutes = "0" + minutes; 
    } 
    if (seconds<10) { 
     seconds = "0" + seconds; 
    } 
    timegraph.innerHTML=hours + ":" + minutes + ":" + seconds + ":" + hundreds + thousands; 
} 
function Running(){ 
    if (ResetStart==1){ 
     myInterval = setInterval (OnGoing , 10); 
    } 
    else { 
     timegraph.innerHTML="00:00:00:00"; 
    } 
}