var remaining_time = [];
for (var i = 0; i < my_shares.data.length; i++) {
remaining_time[i] = my_shares.data[i].remainingTime;
setInterval(function () {
$datatable_my_shares.find('tbody > tr').each(function () {
remaining_time[i] -= 1;
$(this).find('td:last').html(moment.duration(parseInt(remaining_time[i]), "seconds").format("d ["+GENERAL.day+"] hh ["+GENERAL.hour+"] mm ["+GENERAL.minute+"] ss ["+GENERAL.second+"]", {trim: false}));
});
}, 1000);
}
remaining_time数组在for循环中定义,但是当setInterval启动时,它表示remaining_time是NaN。
如何在setInterval中使用remaining_time数组...
答案 0 :(得分:3)
你的i
变量在调用任何setInterval
回调之前已经迭代到了结尾,所以当它们执行时你指向超出数组末尾。
要解决此问题,请将i
声明为块作用域变量:这样循环的每次迭代都会有自己的i
实例,然后也会在{{1}内引用回调:
setInterval