一个关于元素多次触发setInterval定时器的问题!明明在调用前有清除,却为何还是会多次触发

//需求:制作一个类似与抽奖转盘的效果,就是在点击抽奖的时候会触发定时器去执行方法
var iItems=0;
function startMovement (){
    var zhuanpanItems=$('#zhuangpan li');
    if(iItems<7)
    {
        iItems++;
        zhuanpanItems.removeClass('active').eq(iItems).addClass('active');
    }
    else{
        iItems=0;
        zhuanpanItems.removeClass('active').eq(iItems).addClass('active');
    }
};
$('#start').click(function(){  //start 元素是一个div不是input button
    clearInterval(timer_1);  //在此处我明明有清除过定时器,却为什么当我多次点击的时候依然会多次触发定时器,导致越点击转的越快
    var timer_1=setInterval('startMovement()',200);
});

以上代码在start.click()调用的时候,是不是因为我的timer_1变量是局部变量,所以导致在上方的clearInterval方法无法获取改变量,导致清楚失败?
如果是这样的那么我应该怎么样才能防止多次触发该定时器,因为我必须要在用户点击开始按钮的时候才会去转。望大神指点!

阅读 7.6k
3 个回答

timer_1定义在外面(全局变量)就好了。
PS:感觉你要补充下js变量作用域知识

在线坐等大神来解答

新手上路,请多包涵

去掉最后面的var这三个字母

clearInterval(timer_1); //在此处我明明有清除过定时器,却为什么当我多次点击的时候依然会多次触发定时器,导致越点击转的越快

timer_1=setInterval('startMovement()',200);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题