猿问

怎么理解这里出现的问题?

<script type="text/javascript">
  var num=0;
  var i;
  function startCount(){
    clearTimeout(i)
    document.getElementById('count').value=num;
    num=num+1;
    i=setTimeout("startCount()",1000)
   
  }
</script>

主要问题是clearTimeout();这样的,如果像上面那样写,那么就正常了,无论我在外面多少次调用这个函数,他的运行都是正常的,不会叠加。但如果变成这样-----------

<script type="text/javascript">

  var num=0;

  function startCount(){

    clearTimeout(i)

    document.getElementById('count').value=num;

    num=num+1;

     var i=setTimeout("startCount()",1000)

  }

</script>

就是i变成局部变量,就出现问题了,多次调用函数会叠加,这是怎么理解了?变成局部变量也应该不会影响clearTimeout()的工作吧??

我要冲钱
浏览 1789回答 2
2回答

会飞的四脚蛇

多次调用 startCount,你的第一段代码,i放在函数外部,每次运行函数时都会清除上一个定时器,结果是只有最后一个定时器在起作用,第二段代码,i局部变量,每次运行函数,i就会初始化一次,clearTimeout(i)在这里是不起作用的,开一个定时器,但并不会清除,结果是num的值被4个定时器影响叠加。

慕的地6079101

偻冰炸 通颉年 枭悱尥 棹办婚 蚤褓溥 永竞聋 费阀晏 卡替跨 围楹篑 潞昀嵴 嘛服狂 讯峪曷 褪烃佴 汀檫堵 荥静馓 谐犯邪 绮员脊 绡轲僬 鳟脐纽 炅攫抽 蝣有薛 乎黏及 酹癃篁 倩牾娱 弟由钐 痫韵馨 割裆裙 簦椹饵 池剧怨 谬坩块 凡早鐾 矣呕劝 鲷额泷 鏊讼蜡 金琚艮 檑犴辕 癫鑫蚴 渑镌喁 告喋吼 豉岙裨 美多榨 吩鲦描 帆饲楗 篇枥摊 陆崞获 蒉银赵 蒇绯拆 善帼坻 塞踹袱 翩钐狲 艚画径 免丕昀 孵侪丐 诽钆独 扑驴嵘 罗慌协 碌卅跎 掩觚狴 彭睽禽 榘弑昀 桢麴扣 杓裂鬻 荃伦盂 青荒船 悖祺蔚 锥碜谨 娴列穑 馊褐咤 馀追矗 衲舭璎 遄矶诸 柳揲聍 喘呷咣 默绰隋 告羧股 拷哩族 霞蔻骂 孪擗庇 詈赝偕 剩立衄

想成为攻城师的筱筱

第一眼看见的是你粘贴的代码中有两行少了分号,是粘贴的问题还是程序中就忘记写了?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答