2015-09-07 86 views
-3

我必须做一些简单的错误。我正在跟踪光标移动的速度。光标已被替换为50px x 50px的正方形。如果速度大于或等于1.00,则光标方块应该是红色的。如果速度较慢,则应该是蓝色的。问题是,当我加载页面时,无论我移动多快,光标都是蓝色的,并且不会变红。我需要“if”语句来继续评估(JS)

从而计算出速度,我使用this code

而与此代码调用它:

$(function() { 

    var $speedometer = $('#speed'); 

    $('#track').cursometer({ 
     onUpdateSpeed: function(speed) { 
      $speedometer.text(speed); 
     }, 
     updateSpeedRate: 20 
    }); 

     setInterval(function() { 
      if (speed >= 1.00) { 
       $('#cursor').css('background', 'red'); 
      } else { 
       $('#cursor').css('background', 'blue'); 
      } 
     }, 20); 
}); 
+6

如何确定速度变量请显示更多代码 –

+0

其中'速度'定义在哪里? –

+0

我更新了问题。速度正在计算完美。这不是问题,这是我最初没有发布的原因。 –

回答

2

speed不是一个全局变量,而不是在你的区间范围。它在回调的范围中,您无法在外部访问它。你的控制台应该有大量的错误信息告诉你它没有被定义。

$(function() { 

    var $speedometer = $('#speed'), 
     _speed = 0; 

    $('#track').cursometer({ 
     onUpdateSpeed: function(speed) { 
      _speed = speed; 
      $speedometer.text(speed); 
     }, 
     updateSpeedRate: 20 
    }); 

     setInterval(function() { 
      if (_speed >= 1.00) { 
       $('#cursor').css('background', 'red'); 
      } else { 
       $('#cursor').css('background', 'blue'); 
      } 
     }, 20); 
}); 

但为什么使用间隔?只需将onUpdateSpeed回调中的if/else语句放入即可。

$('#track').cursometer({ 
    onUpdateSpeed: function(speed) { 
     $speedometer.text(speed); 
     $('#cursor').css('background-color', speed >= 1 ? 'red' : 'blue'); 
    }, 
    updateSpeedRate: 20 
}); 
+0

我的控制台日志不会给我任何错误。当我在控制台输入“速度”时,它会像我期望的那样给我当前的速度。但我认为我认为这是纯粹的JS问题。我想我需要看看它是如何传递HTML中的信息并从那里恢复工作的。不管怎么说,还是要谢谢你。 –

+0

从你给出的内容来看,'speed'不应该从控制台提供...除非这个库编写得不好并且设置了全局变量。你真的尝试过我推荐的吗? – epascarello

+0

Ohhhh等待等待,我把错误的顺序。是的,你的代码确实有效。非常感谢你。 –