今天遇见一个很棘手的问题,在页面上要使用计时器来控制地图上点和线的绘制,如果单纯的只绘制一条线,那么可以使用一个计时器解决问题,但是问题是我们的线是从数据库取出来的,并且要同时在页面上使用计时器绘制,达到的效果就是同时在绘制线!!
但是动态的创建计时器该怎么办呢?
一开始做了个示例代码,如下:
var objList = [{length:1},{length:2},{length:4}];
var countList = [0,0,0];
for(var i=0;i<objList.length;i++){
objList[i].timer = setInterval(function(){
if(objList[i].length==countList[i]){
clearInterval(objList[i].timer);
}else{
alert(i);
}
countList[i]++
},1000);
}
结果一直报错,找出原因,每个计时器都是单独的,他们调用的代码也是当前设置的,如上,其调用的代码就是
function(){
if(objList[i].length==countList[i]){
clearInterval(objList[i].timer);
}else{
alert(i);
}
countList[i]++
}
这个时候变量i就相当于没有定