我无法让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);
}
})
});
答案 0 :(得分:0)
如果你刚才:
$timer
当按下键40时,可能会将变量设置为null或undefined。
答案 1 :(得分:0)
我不确定您要尝试做什么,但代码中至少有一个问题是您将计时器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);
}
})
});
答案 2 :(得分:0)
问题在于“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);
}
});