我有以下代码,它工作正常,直到我点击#play按钮。我假设它是因为var intID设置在另一个地方,并且当我window.clearInterval()它时它不在同一范围内...我该如何解决这个问题?顺便说一句,这是谷歌地图API第3版
function intervalTrigger(){
return window.setInterval(function(){
placement++;
if(placement >= markers.length){placement = 0;}
google.maps.event.trigger(markers[placement], "click");
}, 5000);
};
var intID = intervalTrigger();
$('#map_canvas').click(function(){window.clearInterval(intID);});
$('a[href=#nextmarker]').live('click',function(){
placement++;
if(placement >= markers.length){placement = 0};
google.maps.event.trigger(markers[placement], "click");
window.clearInterval(intID);
$('a[href=#pause]').replaceWith('<a href="#play">Play</a>');
return false;
});
$('a[href=#prevmarker]').live('click',function(){
placement--;
if(placement == -1){placement = markers.length-1}
google.maps.event.trigger(markers[placement], "click");
window.clearInterval(intID);
$('a[href=#pause]').replaceWith('<a href="#play">Play</a>');
return false;
});
$('a[href=#play]').live('click',function(){
$('a[href=#play]').replaceWith('<a href="#pause">Pause</a>');
var intID = intervalTrigger();
return false;
});
$('a[href=#pause]').live('click',function(){
window.clearInterval(intID);
$('a[href=#pause]').replaceWith('<a href="#play">Play</a>');
return false;
});
答案 0 :(得分:3)
从您的#play点击处理程序中删除var
到以下内容:
$('a[href=#play]').live('click',function(){
$('a[href=#play]').replaceWith('<a href="#pause">Pause</a>');
intID = intervalTrigger();
return false;
});
这将正确设置全局var intID
的值,以便其他事件处理程序可以使用。
答案 1 :(得分:1)
您正在使用var
关键字创建 new 变量,如果您想引用外部范围中的变量,则需要将其取出,如下所示:
$('a[href=#play]').live('click',function(){
$('a[href=#play]').replaceWith('<a href="#pause">Pause</a>');
intID = intervalTrigger();
return false;
});
否则它只是在.live()
处理程序中创建一个新的变量,它不会去任何地方......但是因为你想设置你已经拥有的变量,所以不要使用var
。