我有一个显示模态框的jQuery函数:
function ShowAnonce(){
...
jQuery(".ShowAnonce").show();
jQuery(".ShowAnonce").animate({opacity: 1},300).delay(1800).animate({opacity: 0},300);
}
我想要做的是以不同的随机间隔显示此框10次。我使用for
循环和setTimeout
这样:
for(i=0;i<10;i++){
setTimeout(ShowAnonce(),Math.random()*100);
}
但是它显示了10次没有延迟的方框。我该怎么做才能解决它?
另外,为什么我不能在ShowAnonce
函数结束时执行以下操作?
jQuery(".ShowAnonce").hide();
如果我这样做,它不会显示我的框,因为样式display:none
一直被分配。
答案 0 :(得分:1)
Math.random()可以返回十进制值,如0.123。哪个setTimeout()不能采取。尝试Math.ceil(Math.random())这会给你一个整数,但可能会一次又一次地给出相同的值。 我会尝试(Math.ceil(Math.random())* 10)。
答案 1 :(得分:0)
作为替代方案,您可以使用setInterval
,如下所示,而不是x
次{for}循环:
var x = 0;
var intervalID = setInterval(function () {
ShowAnnounce();
if (++x === 10) {
window.clearInterval(intervalID);
}
}, Math.random()*100);
答案 2 :(得分:0)
关于每个()迭代的另一篇文章给了我一个答案。所以它对我有用:
var time = 0;
for(i=0;i<10;i++){
time = time + Math.random() *10000;
setTimeout(ShowAnonce, time);
}