这是我的代码:
function addRcd2(timeOut){
for(var c=0; c less 5; c++){
var rcdi = "rcd_"+c+"";
setTimeout(function(){
$('.tbl1 tbody').append(rcdi);
},timeOut*c);
}
}
此代码的输出是一个表,其中行具有相同的文本rcd_5.
我的目标是让表行具有不同的记录rcd_1,...... , rcd_5.
有任何想法吗?
典型地在循环问题中创建函数.您传递的所有闭包setTimeout都具有对同一 rcdi变量的引用.在循环内定义变量与在外部定义变量相同:
var rcdi;
for(var c=0; c < 5; c++){
rcdi = "rcd_"+c+"";
// ...
}
Run Code Online (Sandbox Code Playgroud)
这使得你在这里只处理一个变量更加明显.
您必须引入一个新的范围,在JavaScript中只能通过函数实现:
function getCallback(val) {
return function(){
$('.tbl1 tbody').append(val);
};
}
function addRcd2(timeOut){
for(var c=0; c < 5; c++){
setTimeout(getCallback("rcd_"+c),timeOut*c);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在其他答案中看到的那样,您也可以使用即时功能.使用您觉得更具可读性的内容.
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |