我需要“如果”语句继续求值(JS)

I need the "if" statement to keep evaluating (JS)

本文关键字:JS 继续 语句 如果      更新时间:2023-09-26

我一定是做错了什么。我在追踪光标移动的速度。光标已被替换为一个50px x 50px的正方形。如果速度大于等于1.00,则光标方框应为红色。如果它慢,它应该是蓝色的。问题是,当我加载页面时,光标是蓝色的,无论我移动多快,它都不会变成红色。

计算速度,我使用以下代码

用下面的代码调用它:

$(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);
});

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);
});

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

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