jQuery设备方向删除div
我试图做的是在移动设备处于某个角度时设置一个超时,并删除一个div。我的问题是clearTimeout没有按预期工作jQuery设备方向删除div,jquery,Jquery,我试图做的是在移动设备处于某个角度时设置一个超时,并删除一个div。我的问题是clearTimeout没有按预期工作 // here if(window.DeviceOrientationEvent) { // also here window.addEventListener('deviceorientation', function(event) { var beta = event.beta; $('#beta').text("Beta: " +
// here
if(window.DeviceOrientationEvent) {
// also here
window.addEventListener('deviceorientation', function(event) {
var beta = event.beta;
$('#beta').text("Beta: " + beta);
var timeout = null;
if (beta > 10) {
timeout = setTimeout(function(){
$('#alpha').remove();
}, 2000);
}else{
clearTimeout(timeout);
};
}, false);
}
beta是设备前后倾斜的角度,单位为度,每毫秒左右变化一次
我错过了什么吗
var超时不是本地的。我试图在注释所在的外部定义它。//在这里,也在这里
谢谢你,因为你的超时是一个局部变量。它会在每个事件上重新初始化。若要保留此变量,请将其移动到父范围
例如:
if(window.DeviceOrientationEvent) {
var timeout = null;
window.addEventListener('deviceorientation', function(event) {
var beta = event.beta;
$('#beta').text("Beta: " + beta);
if (beta > 10) {
if (!timeout) {
timeout = setTimeout(function(){
$('#alpha').remove();
}, 2000);
}
}else{
clearTimeout(timeout);
timeout = null;
};
}, false);
}
更新
每个timeout=setTimeout覆盖旧的超时值。因此,应该有检查超时是否已经设置的功能。在这种情况下,事件或事件数据有问题。尝试调试代码或添加console.log和trace beta值。我似乎发现了问题所在。请查看我的更新代码。谢谢你的回答和解释。。。现在没事了