关于点击事件多次绑定

在一个页面里面用到了Echarts图表,且这个页面用到了循环定时执行某个过程,用来定时刷新图表。如下:

t2= window.setInterval("doAutoRefreshChart()",30000);    

另外,在图表里放了按钮,在点击按钮的时候,定时器需要停止,按钮动作完成后,定时器需要重新启动。

需求大致如上。

随后碰到一个问题是,定时器好像被多次启动了,后来分析发现,是点击按钮时,按钮click事件被执行了多次。

原来,按钮的绑定动作是放在 doAutoRefreshChart() 里面,由于doAutoRefreshChart()被定时器多次执行,所以在按钮点击时点击事件被执行了多次。难道不覆盖绑定?  

myChart1 = echarts.init(document.getElementById('ktzjyxzt'));
myChart1.on('click', function (params) {
        console.log("click1");
        if(params.data.name=='waterpump_open'){                
            doWaterpump("openline");
        } else if(params.data.name=='waterpump_close'){                
            doWaterpump("closeline");
        }
 })

后来,把上面代码,移出了 doAutoRefreshChart 即解决了。

另外,setInterval的使用,也要注意。在使用setInterval方法时,每一次启动都需要对setInterval方法返回的值做一个判断,判断是否是空值,若不是空值,则要停止定时器并将值设为空,再重新启动,如果不进行判断并赋值,有可能会造成计时器循环调用,在同等的时间内同时执行调用的代码,并会随着代码的运行时间增加而增加,导致功能无法实现,甚至占用过多资源而卡死奔溃。因此在每一次使用setInterval方法时,都需要进行一次判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值