让随机数组不起作用?

时间:2014-02-02 00:14:23

标签: javascript

我正在尝试创建一个简单的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 个答案:

答案 0 :(得分:2)

将函数名称传递给setInterval(),如下所示:

var t = setInterval(timedMsg, 2000);

http://jsfiddle.net/R8SYf/6/

答案 1 :(得分:1)

您的代码中存在一些问题:

1)当您将字符串传递给setInterval时,触发eval并且您的函数在全局上下文中运行,您不希望这样。要修复它,只需传递对该函数的引用; rebember函数也是对象:

var t = setInterval(timedMsg, 2000);

2)window.load事件需要一个函数,但您要分配init函数的返回值undefined。与上面的情况一样,您需要传递一个函数对象,而不是执行函数:

window.onload = init;

3)您的小提琴已设置为在onLoad事件中加载代码,但您正在分配自己的功能。您需要将行为更改为No wrap - in <head>

4)虽然有效,但使用Array构造函数创建数组并不是一种好习惯。只需使用文字语法:

msgArr = ['Computer.', 'Uploading', 'Random'];

修正http://jsfiddle.net/R8SYf/11/