han73748196
han73748196
采纳率95.5%
2017-06-28 09:16

js定时器的问题,创建完清除清除不掉

7
已采纳
 点击一个按钮触发一个定时器  
var ftpurl = window.setInterval(function(){ftp();},2000); 
当我再次点击的时候 想 window.clearInterval(ftpurl);   清掉的时候。
取消不了上一次的循环而且上一次的循环和现在的循环一起走。。
 function confirm()
    {

        window.clearInterval(ftpurl);  

        function ftp(){
            source = data[index];
              $.ajax({
            url : "xxx.action",
            type:'POST',
            data:{xx:xx},
            dataType:"text",
            success:function(datas)
            { 
            var result = eval('('+datas+')');
                 var myChart = echarts.init(document.getElementById('topbing'));
                option = {
                    tooltip : {
                        trigger: 'item',
                        formatter: "{a} <br/>{b} : {c} ({d}%)"
                    },
                   color:["#0171c0","#025d9c","#52b1f4","#cfebff","#72c1f8"] ,
                    series : [
                        {
                            name:'访问来源',
                            type:'pie',
                            radius : '65%',
                            center: ['50%', '45%'],
                            data:result
                        }
                    ]
                };
                        myChart.setOption(option);      

            }
           })


           }
        var ftpurl= window.setInterval(function(){ftp();}, 10000);
        window.onload = function(){  
             ftpurl;  
          }  

    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • showbo GoCityPass新加坡曼谷通票 4年前

    完整代码呢?应该是ftpurl变量作用域的问题导致clearInterval访问不到,ftpurl 放到window作用域下或者改成这样
    window.ftpurl = window.setInterval(function(){ftp();},2000);

    window.clearInterval(window.ftpurl )

    点赞 3 评论 复制链接分享
  • Yangvivian Yangvivian 4年前

    var ftpurl;
    $('button').on("click",function(){
    if(ftpurl){
    ftpurl=clearInterval(ftpurl);
    }else{
    ftpurl = window.setInterval(function(){ftp();},2000);
    }
    })

    点赞 评论 复制链接分享
  • wodewojueding wodewojueding 4年前

    你没有清除掉,虽然有清除代码其实并没有成功
    把接收定时器的变量放在最外面

    点赞 评论 复制链接分享
  • smile016 樱絮 4年前

    换成self.setInterval(function(){ftp();},2000); 试下

    点赞 评论 复制链接分享

相关推荐