设置Interval NaN变量

时间:2018-01-28 22:24:38

标签: javascript jquery

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数组...

1 个答案:

答案 0 :(得分:3)

你的i变量在调用任何setInterval回调之前已经迭代到了结尾,所以当它们执行时你指向超出数组末尾。

要解决此问题,请将i声明为块作用域变量:这样循环的每次迭代都会有自己的i实例,然后也会在{{1}内引用回调:

setInterval