javascript - 在 Javascript 中使用带有计时器的随机数生成器每次都会给出相同的数字

标签 javascript math random

我正在尝试使用 javascript 制作文本幻灯片,但是在 javascript 中,数学楼层函数始终返回相同的随机数。下面的代码有什么问题?

var randomnumber;
D=Array(7)
D[0]='Sunday!'
D[1]='Monday!'
D[2]='Tuesday!'
D[3]='Wednesday!'
D[4]='Thursday!'
D[5]='Friday!'
D[6]='Saturday!'

window.setTimeout("Tick()", 1000);    

function Tick() 
{
    document.write('<marquee><font size="+2">'+D[Math.floor(Math.random()*7)]+'</font></marquee>')    
}


</script>

最佳答案

Works fine 。但是,使用 setTimeout 时必须传递对函数的引用,而不是字符串。 setTimeout 在向其传递字符串时使用类似 eval 的过程,从而使这种使用方法不安全。

function Tick() {...}

//pass a reference (no quotes)
window.setTimeout(Tick, 1000);​
<小时/>

setTimeout 仅在达到超时时触发一次。如果您想做一个恒定的、连续的Tick,那么最好使用setInterval,它会触发并“重新加载”以再次触发。

<小时/>

这是a modified version of the code符合您的描述

//create the marquee and add to body 
var marquee = document.createElement('marquee');
document.body.appendChild(marquee);

function Tick() {
    //generate the random text
    var randomDay = D[Math.floor(Math.random() * 7)];

    //change the existing marquee text
    //textContent for compliant browsers
    //innerText for IE
    marquee.textContent = randomDay;
}

//tick every second
window.setInterval(Tick, 1000);​

关于javascript - 在 Javascript 中使用带有计时器的随机数生成器每次都会给出相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347145/

相关文章:

random - 网络标志 : How to make sure a variable stays in a defined range?

javascript - 如何在 JavaScript 中剪切录音

javascript - MongoDB 查询 - 数据过滤

javascript - jQuery 更改项目的多个类名之一

python - 快速查找给定向量的字典向量。高维度

python - random.choice 被字典破坏了

javascript - 如何在不分配 Id 的情况下引用元素?

Java找到两条线的交点

c++ - 角度大于 Pi 的反插值?

java - 这个随机出生日期生成器有什么问题?