我正在尝试使用 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/