我需要在一段延迟后动态调用javascript函数,函数display_1,2,...N将被动态构造。我的脚本看起来像这样,但是如果我使用下面的代码,函数永远不会被触发,但是如果我硬编码函数,它看起来就很好。
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();发布于 2011-04-11 15:26:16
您必须添加括号,以便调用该函数:
setTimeout(prefix.concat(i)+"()", 1000);或者简单地说:
setTimeout(prefix + i + "()", 1000);除此之外,请注意这两个函数是同时实际调用的,因为使用‘setTimeout()’启动的计时器同时启动。
根据您要执行的操作,您可能会查看setInterval(),或者在display_1()函数结束时启动第二个超时。
发布于 2011-04-11 15:20:20
您可以将函数分组到一个数组中,而不是通过字符串:
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 );
}
}如果您想更进一步,您甚至可以省略显式的函数名称:
var functions = [
function() { /*the function_1 implementation*/
},
function() { /*the function_2 implementation*/
}
];发布于 2011-04-11 15:27:08
它应该是
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
https://stackoverflow.com/questions/5618007
复制相似问题