Javascript 设置间隔NaN变量 var剩余时间=[]; 对于(var i=0;i

Javascript 设置间隔NaN变量 var剩余时间=[]; 对于(var i=0;i,javascript,jquery,Javascript,Jquery,剩余_时间数组在for循环中定义,但当setInterval开始时,它表示剩余_时间为NaN 如何在setInterval中使用剩余时间数组…在调用任何setInterval回调之前,您的i变量已迭代到末尾,因此在它们执行时,您指向数组的末尾之外 要解决此问题,请将i声明为块作用域变量:这样,循环的每个迭代都将有自己的i实例,该实例也将从setInterval回调中引用: var remaining_time = []; for (var i = 0; i < my_sha

剩余_时间数组在for循环中定义,但当setInterval开始时,它表示剩余_时间为NaN


如何在setInterval中使用剩余时间数组…

在调用任何
setInterval
回调之前,您的
i
变量已迭代到末尾,因此在它们执行时,您指向数组的末尾之外

要解决此问题,请将
i
声明为块作用域变量:这样,循环的每个迭代都将有自己的
i
实例,该实例也将从
setInterval
回调中引用:

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);
        }

在调用任何
setInterval
回调之前,您的
i
变量已迭代到末尾,因此在它们执行时,您指向数组的末尾之外

要解决此问题,请将
i
声明为块作用域变量:这样,循环的每个迭代都将有自己的
i
实例,该实例也将从
setInterval
回调中引用:

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);
        }