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