jQuery设备方向删除div

jQuery设备方向删除div,jquery,Jquery,我试图做的是在移动设备处于某个角度时设置一个超时,并删除一个div。我的问题是clearTimeout没有按预期工作 // here if(window.DeviceOrientationEvent) { // also here window.addEventListener('deviceorientation', function(event) { var beta = event.beta; $('#beta').text("Beta: " +

我试图做的是在移动设备处于某个角度时设置一个超时,并删除一个div。我的问题是clearTimeout没有按预期工作

// 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值。我似乎发现了问题所在。请查看我的更新代码。谢谢你的回答和解释。。。现在没事了