setInterval +随机数

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

未捕获的ReferenceError:未定义x

循环工作只是不知道如何修复此错误。 谢谢你的帮助

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

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

范围界定就是问题所在。

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