javascript - 无法清除定时器
阿神
阿神 2017-04-11 11:40:23
[JavaScript讨论组]

$(document).ready(function() {

$(".center-gold-pic").on("click",function(){
    var timer=''
    var p=$("#animation-pic");
    p.addClass("hide");
    var ps=$("#animation-pics");
    ps.addClass('show');
    //判断状态
if (ps.hasClass('stop')){
         ps.removeClass('stop');
         //定时发送请求
         timer=setInterval(function(){
           var left = Math.ceil(Math.random() * (9 - 0) + 0) * 22;
           var top = Math.ceil(Math.random() * (9 - 0) + 0) *22;

       $.post('ajax.txt', function(data) {
            if(data==1){
              var imgObj=$(document.createElement("p")) ;
              imgObj.css({
                  "left":left+10,
                  "top":top+10,
                  "background-repeat":"no-repeat",
                   "background-position":"center",
                   "background-size":"cover",
                   "height":"35px",
                    "width":"35px",
                    "border-radius":"100%",
                    "position":"absolute",
                   "background-image":"url(./imgs/images/7.png)",
                  });
              $("#scan-gold-picc").append(imgObj);
             
             }else{
                setTimeout(function(){show1();}, 4000)
                 };
            });
        
       },5000);

  }else{
      alert(123)
      ps.addClass('stop');
      clearInterval(timer); 
       return;
      }

});

当我再次点击的时候发现定时器不能清除;但是我用alert(123)的时候能够正常宣示

阿神
阿神

闭关修行中......

全部回复(1)
迷茫
 var timer=''

写在事件绑定外面。
写在里面每次执行的时候不是同一个函数作用域。上一个函数作用域内的变量已经被销毁。
修改一下,刚才console查看不是undefined,是个空,只能确定else里的timer不是if中的那一个。

或者不想增加全局变量的话可以添加给dom对象(不是jQuery对象)

ps[0].timer=setInterval()
clearInterval(ps[0].timer); 
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号