js定时器的问题,创建完清除清除不掉
 点击一个按钮触发一个定时器  
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个回答

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

window.clearInterval(window.ftpurl )

han73748196
han73748196 太谢谢大神了,,完美解决
大约 3 年之前 回复

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问