計(jì)時(shí)器沒(méi)有清除干凈?

科技 未結(jié) 7 500
冰妮1
冰妮1 2023-02-18 16:44

我做了一個(gè)倒計(jì)時(shí)計(jì)時(shí)器,達(dá)到的效果是點(diǎn)擊元素,觸發(fā)計(jì)時(shí)器,倒計(jì)時(shí)5秒后,清除計(jì)時(shí)器。再次點(diǎn)擊,再次觸發(fā)計(jì)時(shí)器(這一步還沒(méi)有測(cè)試),問(wèn)題在上一步——清除計(jì)時(shí)器后,計(jì)時(shí)器仍然還是運(yùn)作,代碼如下:
var time=5;//初始化倒計(jì)時(shí)秒數(shù)

var timer;//定義計(jì)時(shí)器 yanz.onclick=function(){ var timer=window.setInterval("daoshu()",1000);//觸發(fā) } function daoshu(){ yanz.style.fontSize="12px"; yanz.innerHTML="短信已發(fā)送,"+time+"s內(nèi)有效"; time--;//倒計(jì)時(shí) if(time<=0){//計(jì)時(shí)完畢 Stop();//清除計(jì)時(shí)器 yanz.style.fontSize="18px"; yanz.innerHTML="點(diǎn)擊獲取短信驗(yàn)證碼"; } console.log(time);//這里能看出,該計(jì)時(shí)器并未被清除,任然在運(yùn)作 } function Stop(){ window.clearInterval(timer);//清除計(jì)時(shí)器 } 大神指點(diǎn)一下,問(wèn)題出在哪里了?

7條回答
  •  我是funnycc
    2023-02-18 17:15

    這是的timer永遠(yuǎn)是個(gè)局部變量,stop里面清除的是全局的timer,然后全局的timer始終是null,在跑的始終是局部的timer,所以你應(yīng)該知道錯(cuò)誤在哪了

提交回復(fù)