以下是我的javascript代码:
function showBranch_init() {
var id_arr = ["jdc_b1","jdc_b2","jdc_b3","jdc_b4"];
for(a=0;a<id_arr.length;a++){
timeoutID = window.setTimeout(function() {
showBranch(id_arr[a]); // <-- Right here
}, 500);
}
}
如何将id_arr[a]
的值传递给showBranch
funcion?
目前,上述代码会为null
id_arr[a]
答案 0 :(得分:6)
通过为每个迭代步骤引入一个新范围(通过函数调用),您可以传递这样的参数:
function showBranch_init() {
var id_arr = ["jdc_b1","jdc_b2","jdc_b3","jdc_b4"];
for(a=0;a<id_arr.length;a++){
(function(i) {
timeoutID = window.setTimeout(function() {
showBranch(id_arr[i]); // <-- Right here
}, 500*i);
})(a);
}
}
答案 1 :(得分:0)
function showBranch_init() {
var id_arr = ["jdc_b1","jdc_b2","jdc_b3","jdc_b4"];
for(a=0;a<id_arr.length;a++){
timeoutID = window.setTimeout(function(idvalue) {
showBranch(idvalue);
}(id_arr[a]), 500);
}
}
编辑:您的解决方案的问题在于,当代码执行(超时)时,执行范围中不再存在id_arr,从而导致undefined
结果。当将变量作为参数发送时,无论执行范围如何,它都会与函数本身“保持”。
答案 2 :(得分:-1)
function showBranch_init() {
var id_arr = ["jdc_b1","jdc_b2","jdc_b3","jdc_b4"];
timeoutID = window.setTimeout(function() {
for(a=0;a<id_arr.length;a++){
showBranch(id_arr[a]); // <-- Right here
}
}, 500);
}
你可以这样做吗? O_O