簡體   English   中英

為什么clearInterval不起作用

[英]Why clearInterval doesn't work

我無法讓clearInterval工作

$(document).ready(function(){
    $(document).keydown(function (e){
        var $timer = setInterval(function(){$("#Move").animate({marginTop:'+=10'}, 'fast');},1);
        if(e.keyCode == 40){ //DOWN
            $timer
        }
        if (e.keyCode == 38) { //UP
            clearInterval($timer);
        }
    })
});

如果你有:

$timer

當按下鍵40時,可能會將變量設置為null或undefined。

我不確定自己要做什么,但是代碼中至少有一個問題是您將計時器ID存儲在本地變量中,該值在下次keydown處理程序運行時將不會保留。 使用全局代替:

var $timer;
$(document).ready(function(){
    $(document).keydown(function (e){
        if(e.keyCode == 40){ //DOWN
            clearInterval($timer);
            $timer = setInterval(function(){$("#Move").animate({marginTop:'+=10'}, 'fast');},1);
        }
        if (e.keyCode == 38) { //UP
            clearInterval($timer);
        }
    })
});

問題在於“marginTop”。 將其更改為“ marginTop”:“ + = 10px”。 還將代碼移到$(document).ready之外。 以下應該工作。

$(document).keydown(function(e){
  if(e.keyCode == 40){
      //console.log(2)
      $timer = setInterval(function(){
         $("#Move").animate({"marginTop":"+=10px"}, "fast")
      }, 1000);
  } 
  if(e.keyCode == 38){
    //console.log(3)
    clearInterval($timer);
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM