【问题标题】:setInterval + Random NumbersetInterval + 随机数
【发布时间】:2015-11-30 19:35:05
【问题描述】:

我正在尝试创建一个每 5 秒生成一个数字的函数,但是当我使用这些函数时会出现一个问题,因为我想在这个数字上使用 animateNumber() 函数。我收到此错误消息:

Uncaught ReferenceError: x is not defined

循环正在工作,只是不知道如何解决此错误。感谢您的帮助

function myInterval() {
    var x = Math.round(Math.random() * 5000) + 1;
}

var timeoutId = setTimeout(ref, 100);
var intervalId = setInterval(ref, 5000);
var intervalId = setInterval(myInterval, 5000);

// ANIMATED NUMBER

function ref() {
    $("#budget-left").animateNumbers(x);
}

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    x 变量是在 myInterval 函数中定义的,因此在 ref() 内部无法访问 - 因此出现错误。你需要提高它的范围:

    var x = 0;
    
    function myInterval() {
        x = Math.round(Math.random() * 5000) + 1;
    }
    
    var timeoutId = setTimeout(ref, 100);
    var intervalId = setInterval(ref, 5000);
    var intervalId = setInterval(myInterval, 5000);
    
    // ANIMATED NUMBER
    
    function ref() {
        $("#budget-left").animateNumbers(x);
    }
    

    还要注意,如果你有一个计时器,这个逻辑会更有意义,调用一个函数来生成数字然后显示它。试试这个:

    var intervalId = setInterval(function() {
        var randomNumber = Math.round(Math.random() * 5000) + 1;
        $("#budget-left").animateNumbers(randomNumber);
    }, 5000);
    

    【讨论】:

    • 没问题,很乐意提供帮助。
    【解决方案2】:

    范围界定是个问题。

            var x =0;
      function myInterval() {
        x = Math.round(Math.random() * 5000) + 1;
        }
    
        var timeoutId = setTimeout(ref, 100);
        var intervalId = setInterval(ref, 5000);
        var intervalId = setInterval(myInterval, 5000);
    
        // ANIMATED NUMBER
    
        function ref() {
            $("#budget-left").animateNumbers(x);
        }
    

    【讨论】:

      猜你喜欢
      • 2022-09-24
      • 2015-04-16
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2017-03-28
      • 2013-07-14
      • 1970-01-01
      • 2013-06-06
      相关资源
      最近更新 更多