Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 让随机数组不工作?_Javascript - Fatal编程技术网

Javascript 让随机数组不工作?

Javascript 让随机数组不工作?,javascript,Javascript,我正在尝试创建一个简单的JS,它将获得随机数组并通过div容器发布它们。以下是我到目前为止的情况,请记住我对JS很糟糕 function timedMsg() { currMsg++; document.getElementById('timedMsgDiv').innerHTML = msgArr[currMsg % msgArr.length]; }; function init() { currMsg = -1; msgArr = Array('Compu

我正在尝试创建一个简单的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();

它只获取“计算机”,然后不会随机翻转、循环或其他任何内容。有什么原因吗?这是我的JSFIDLE:

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

var t = setInterval(timedMsg, 2000);

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

var t = setInterval(timedMsg, 2000);

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

var t = setInterval(timedMsg, 2000);

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

var t = setInterval(timedMsg, 2000);

您的代码中有几个问题:

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

var t = setInterval(timedMsg, 2000);
2)
window.load
事件需要一个函数,但您正在分配
init
函数的返回值,该函数是
未定义的
。与上述情况类似,您需要传递函数对象,而不是执行函数:

window.onload = init;
3) 您的小提琴设置为在
onLoad
事件中加载代码,但您正在分配自己的函数。您需要将行为更改为
No wrap-in

4) 虽然is可以工作,但使用数组构造函数创建数组并不是一种好的做法。只需使用文字语法:

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

修复了代码中的一些问题:

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

var t = setInterval(timedMsg, 2000);
2)
window.load
事件需要一个函数,但您正在分配
init
函数的返回值,该函数是
未定义的
。与上述情况类似,您需要传递函数对象,而不是执行函数:

window.onload = init;
3) 您的小提琴设置为在
onLoad
事件中加载代码,但您正在分配自己的函数。您需要将行为更改为
No wrap-in

4) 虽然is可以工作,但使用数组构造函数创建数组并不是一种好的做法。只需使用文字语法:

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

修复了代码中的一些问题:

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

var t = setInterval(timedMsg, 2000);
2)
window.load
事件需要一个函数,但您正在分配
init
函数的返回值,该函数是
未定义的
。与上述情况类似,您需要传递函数对象,而不是执行函数:

window.onload = init;
3) 您的小提琴设置为在
onLoad
事件中加载代码,但您正在分配自己的函数。您需要将行为更改为
No wrap-in

4) 虽然is可以工作,但使用数组构造函数创建数组并不是一种好的做法。只需使用文字语法:

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

修复了代码中的一些问题:

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

var t = setInterval(timedMsg, 2000);
2)
window.load
事件需要一个函数,但您正在分配
init
函数的返回值,该函数是
未定义的
。与上述情况类似,您需要传递函数对象,而不是执行函数:

window.onload = init;
3) 您的小提琴设置为在
onLoad
事件中加载代码,但您正在分配自己的函数。您需要将行为更改为
No wrap-in

4) 虽然is可以工作,但使用数组构造函数创建数组并不是一种好的做法。只需使用文字语法:

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


修正了window.onload=init在你的代码和小提琴中,有些东西看起来不对劲。固定
window.onload=init在你的代码和小提琴中,有些东西看起来不对劲。固定
window.onload=init在你的代码和小提琴中,有些东西看起来不对劲。固定
window.onload=init在你的代码和小提琴中,有些东西看起来不对劲。固定
setInterval(timedMsg,2000)@elclanrs-是的,它又短又漂亮!非常感谢。成功了。一旦我有能力,我会给出答案。但这不是真正的问题。真正的问题是如何设置小提琴,OP必须在head
No wrap-
中加载脚本,并将一个函数分配给加载事件(而不是返回值),并且它应该在@elclans@elclans@what you意指什么?
setInterval(timedMsg,2000)@elclanrs-是的,它又短又漂亮!非常感谢。成功了。一旦我有能力,我会给出答案。但这不是真正的问题。真正的问题是如何设置小提琴,OP必须在head
No wrap-
中加载脚本,并将一个函数分配给加载事件(而不是返回值),并且它应该在@elclans@elclans@what you意指什么?
setInterval(timedMsg,2000)@elclanrs-是的,它又短又漂亮!非常感谢。成功了。一旦我有能力,我会给出答案。但这不是真正的问题。真正的问题是如何设置小提琴,OP必须在head
No wrap-
中加载脚本,并将一个函数分配给加载事件(而不是返回值),并且它应该在@elclans@elclans@what you意指什么?
setInterval(timedMsg,2000)@elclanrs-是的,它又短又漂亮!非常感谢。成功了。一旦我有能力,我会给出答案。但这不是真正的问题。真正的问题是如何设置小提琴,OP必须在head
No wrap-
中加载脚本,并分配一个函数