首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何动态调用javascript函数

如何动态调用javascript函数
EN

Stack Overflow用户
提问于 2011-04-11 15:17:19
回答 5查看 695关注 0票数 1

我需要在一段延迟后动态调用javascript函数,函数display_1,2,...N将被动态构造。我的脚本看起来像这样,但是如果我使用下面的代码,函数永远不会被触发,但是如果我硬编码函数,它看起来就很好。

代码语言:javascript
运行
复制
function display_1() {
alert(1);
}

function display_2() {
alert(2);
}

function display() {
var prefix = 'display_';
for(var i = 1; i < 3; i++) {
setTimeout(prefix.concat(i), 1000);
}

window.onload = display();
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-11 15:26:16

您必须添加括号,以便调用该函数:

代码语言:javascript
运行
复制
setTimeout(prefix.concat(i)+"()", 1000);

或者简单地说:

代码语言:javascript
运行
复制
setTimeout(prefix + i + "()", 1000);

除此之外,请注意这两个函数是同时实际调用的,因为使用‘setTimeout()’启动的计时器同时启动。

根据您要执行的操作,您可能会查看setInterval(),或者在display_1()函数结束时启动第二个超时。

票数 2
EN

Stack Overflow用户

发布于 2011-04-11 15:20:20

您可以将函数分组到一个数组中,而不是通过字符串:

代码语言:javascript
运行
复制
function display_1() {...}

function display_2() { ... }

var functions = [ display_1, display_2 ];

function display() {
   for( var i = 0; i != functions.length; ++i ) { 
     setTimeout( functions[i], 1000 );
   }
 }

如果您想更进一步,您甚至可以省略显式的函数名称:

代码语言:javascript
运行
复制
var functions = [
    function() { /*the function_1 implementation*/ 
    },
    function() { /*the function_2 implementation*/
    }
];
票数 5
EN

Stack Overflow用户

发布于 2011-04-11 15:27:08

它应该是

代码语言:javascript
运行
复制
function display_1() {
alert(1);
}

function display_2() {
alert(2);
}

function display() {
var prefix = 'display_';
for(var i = 1; i < 3; i++) {
setTimeout(prefix.concat(i)+'()', 1000);
}
}

window.onload = display;

应将function

  • onload设置为函数,而不是将其返回值设置为
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5618007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档