我需要在一段延迟后动态调用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();
答案 0 :(得分:5)
您可以将函数分组为数组,而不是通过字符串:
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*/
}
];
答案 1 :(得分:2)
答案 2 :(得分:1)
应该是
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;
答案 3 :(得分:0)
setInterval('load_testimonial()',5000);//first parameter is your function or what ever the code u want to execute, and second is time in millisecond..
这将帮助您在每个给定时间执行您的功能。
答案 4 :(得分:0)
如果你真的希望在执行函数之间有1000毫秒的延迟,你可以这样做:
window.onload = function() {
var n = 0;
var functions = [
function() {
alert(1);
setTimeout(functions[n++], 1000);
},
function() {
alert(2);
setTimeout(functions[n++], 1000);
},
function() {
alert(3);
}
];
setTimeout(functions[n++], 1000);
};
(如果需要,以较少的重复性重写它)