我在计时器内增加变量的值。它也在onClick事件的按钮内。
setInterval(function () {
document.getElementById('z_in').addEventListener('click', function () {
zoom_level = 1;
}, false);
document.getElementById('z_out').addEventListener('click', function () {
zoom_level = 3;
}, false);
document.getElementById('rotate').addEventListener('click', function () {
angle = angle + 10;
}, false);
Find(db, minLon, maxLon, minLat, maxLat, zoom_level, angle, stage, layer, i);
i++;
//angle = 0;
console.log();
}, 1000);
这里角度在每个循环中增加太多而不是十分之一。这个问题的原因是什么?
答案 0 :(得分:2)
如果只在计时器处于活动状态时需要监听器,则可以使用以下内容:
var timer, i = 0, zoom_level = 1, angle = 0;
var z_in_el = document.getElementById('z_in');
var z_out_el = document.getElementById('z_out');
var rotate_el = document.getElementById('rotate');
function zoomIn(){
zoom_level = 1;
}
function zoomOut(){
zoom_level = 3;
}
function rotate(){
angle += 10;
}
function startTimer(){
addListeners();
timer = window.setInterval(function(){
i++;
Find(db, minLon, maxLon, minLat, maxLat, zoom_level, angle, stage, layer, i);
console.log(i, zoom_level, angle);
}, 1000);
}
function stopTimer(){
removeListeners();
window.clearInterval(timer);
}
function addListeners(){
z_in_el.addEventListener("click", zoomIn, false);
z_out_el.addEventListener("click", zoomOut, false);
rotate_el.addEventListener("click", rotate, false);
}
function removeListeners(){
z_in_el.removeEventListener("click", zoomIn, false);
z_out_el.removeEventListener("click", zoomOut, false);
rotate_el.removeEventListener("click", rotate, false);
}
使用startTimer()
设置间隔,或stopTimer()
删除它。