Embrace01
2016-11-28 04:25:18
<!DOCTYPE?html>
<html>
<head>
<meta?charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>倒計(jì)時(shí)<span?style="color:red;font-size:50px;"?id="time"></span></div>
????<button?id="star">點(diǎn)擊開始</button>
<button?id="stop">點(diǎn)擊停止</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);?//總共秒數(shù)
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+"小時(shí)"+m+'分'+ss+'秒';
if(s<=0){
time.innerHTML='時(shí)間結(jié)束啦,沒有啦0.0!'
}
??????????????}
???????function?check(i){
if(i<10){
i='0'+i;
}
return?i;
}
</script>
</body>
</html>
3 回答
已采納

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

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
sta函數(shù)內(nèi)的setInterval也要賦給st
function?sta(){ ????st?=?setInterval(op,500); }

添加回答
舉報(bào)
0/150
提交
取消