我正在尝试使用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>
答案 0 :(得分:4)
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);