我有3个div(#digit1,#digit2,#digit3),代表已知数字的3位数字(例如:459)。在显示实际数字之前,我想显示0到9(每100毫秒)的20个随机数,用于每个数字。
使用jQuery,我能够显示第一个数字,如下所示:
function displayInterval(callback,currentnumber) {
x = 0;
var interval = window.setInterval(function () {
callback();
if (++x === 20) {
window.clearInterval(interval);
$("#digit1").html(currentnumber);
}
}, 100);
}
var number1="4";
var number2="5";
var number3="9";
displayInterval(function () {
var randomnumber=Math.floor(Math.random()*10);
$("#digit1").html(randomnumber);
},number1);
如果我再添加2次对displayInterval的调用,它只适用于1位数,而其他两位则永远显示随机数。
提前感谢您的帮助!
注意:以上只是我需要的简化示例。我的号码可以有1到6位数,如果超过3位数就必须加一个空格(例如:12 450),这就是为什么我需要将每个数字放在一个单独的div中。
答案 0 :(得分:0)
您应该使用数组来存储数字。并在每三个数字之间加上差距。
jsFiddle Live DEMO
你应该像你在问题中所说的那样为你的每个数字加一个div(查看演示)。
将您的JavaScript更改为此,并查看演示的HTML代码。
function displayInterval(callback) {
x = 0;
var interval = window.setInterval(function() {
callback();
if (++x === 20) {
window.clearInterval(interval);
var nums = $("div[num]");
var max = $("div[num]").reverse().attr('num');
var i = max, j=1;
$.each( nums, function( key, value ) {
if(j%3==0) {
$("div[num='"+i+"']").html(" "+$(this).attr("value"));
} else {
$("div[num='"+i+"']").html($(this).attr("value"));
}
i--;j++;
});
}
}, 100);
}
displayInterval(function () {
var nums = $("div[num]");
var max = $("div[num]").reverse().attr('num');
var i = max, j=1;
$.each( nums, function( key, value ) {
var randomnumber=Math.floor(Math.random()*10)+"";
if(j%3==0 && i != max) {
$("div[num='"+i+"']").html(" "+randomnumber);
} else {
$("div[num='"+i+"']").html(randomnumber);
}
i--;j++;
});
});