随机数组不起作用?
2014-02-02
43
我正在尝试创建一个简单的 JS,它将获取随机数组并通过 div 容器发布它们。这是我目前所拥有的,现在请记住,我对 JS 非常不擅长。
function timedMsg() {
currMsg++;
document.getElementById('timedMsgDiv').innerHTML = msgArr[currMsg % msgArr.length];
};
function init() {
currMsg = -1;
msgArr = Array('Computer.', 'Uploading', 'Random');
timedMsg();
var t = setInterval("timedMsg()", 50);
};
window.onload = init();
它只获取“计算机”,然后不会随机翻阅它们或循环或做任何事情。有什么原因吗?这是我的 JSFiddle: http://jsfiddle.net/R8SYf/
2个回答
Niklas
2014-02-02
您的代码中存在一些问题:
1) 当您将字符串传递给
setInterval
时,您会触发
eval
,并且您的函数在全局上下文中运行,您不希望出现这种情况。要修复此问题,只需将引用传递给该函数;请记住,函数也是对象:
var t = setInterval(timedMsg, 2000);
2)
window.load
事件需要一个函数,但您正在分配
init
函数的返回值,该值是
undefined
。与上述情况一样,您需要传递一个函数对象,而不是执行该函数:
window.onload = init;
3) 您的 fiddle 设置为在
onLoad
事件中加载代码,但您正在分配自己的函数。您需要将行为更改为
No wrap - in <head>
。
4) 虽然有效,但使用 Array 构造函数创建数组并不是好习惯。只需使用文字语法:
msgArr = ['Computer.', 'Uploading', 'Random'];
elclanrs
2014-02-02