Embrace01
2016-11-28 04:25:18
<!DOCTYPE?html>
<html>
<head>
<meta?charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>倒計時<span?style="color:red;font-size:50px;"?id="time"></span></div>
????<button?id="star">點擊開始</button>
<button?id="stop">點擊停止</button>
<script>
window.onload=function(){
op();
????????????????????????var?st?=?setInterval(op,500);
????????????????????????var?stop?=document.getElementById('stop');
????????????????????????var?star?=document.getElementById('star');
???????stop.onclick=stp;
???????star.onclick=sta;
???????function?sta(){
????????setInterval(op,500);
???????}
???????function?stp(){
?????????clearInterval(st);
????????}
??????}
function?op(){
var?time?=?document.getElementById('time');
var?now?=?new?Date();
var?end?=?new?Date('2018/05/20,5:20');
var?s?=parseInt((end.getTime()?-?now.getTime())/1000);?//總共秒數
var?ss?=parseInt(s%60);
var?m?=parseInt(s/60%60);
var?h?=parseInt(s/(60*60)%24);
var?d?=parseInt(s/(24*60*60));
???ss?=?check(ss);
???m=check(m);
time.innerHTML=d+"天"+h+"小時"+m+'分'+ss+'秒';
if(s<=0){
time.innerHTML='時間結束啦,沒有啦0.0!'
}
??????????????}
???????function?check(i){
if(i<10){
i='0'+i;
}
return?i;
}
</script>
</body>
</html>
3 回答
已采納

MarlboroKay
TA貢獻189條經驗 獲得超236個贊
首先,因為你在加載的時候定義了 st ,所以當你第一次點擊停止的時候,st 會被清除掉。但是第二次點擊時,加載的st 一直被調用,所以導致停止不好使。
1、把加載的 st 注釋掉 2、在 sta 方法里定義一個全局變量 st?
?//var?st=setInterval(op,500);
function?sta(){ ???//setInterval(op,500); ?????st?=?setInterval(op,500); ??? ??} ??function?stp(){ ???//console.log(st) ????clearInterval(st); ???}
?
這樣寫只是解決了問題,但是會產生 全局變量,個人不建議這么做。
其實可以把 star stop 寫在一個方法里,用參數值來做判斷。
希望對你有幫助,望采納!

stone310
TA貢獻361條經驗 獲得超191個贊
sta函數內的setInterval也要賦給st
function?sta(){ ????st?=?setInterval(op,500); }

添加回答
舉報
0/150
提交
取消