run = function(num, index){ var $elem = $('.countNum').eq(index); var numMemo = num; return function() { num--; if (num < 0) { num = numMemo; } $elem.text(num); }; }; 大致思路如此。重点就是 run 方法返回的也是一个函数。 如图: // 回复更新// 本质是一样的 run = function(arr){ var $countNums = $('.countNum'); var arrCopy = arr.slice(0); return function() { // var a = [] for (var i = 0, len = arrCopy.length; i < len; i++) { arrCopy[i] = arrCopy[i] - 1; if (arrCopy[i] < 0) { arrCopy[i] = arr[i]; } // a[i] = arrCopy[i] $countNums.eq(i).text(arrCopy[i]); } // console.log(a); }; }; /// 更新第三次 run = function(arr, done){ var $countNums = $('.countNum'); var len = arr.length; var arrTemp = []; for (var i = 0; i < arr.length; i++) { arrTemp[i] = 0; } return function() { // 是否所有的都完成了 var allOff = true; for (var i = 0; i < len; i++) { if (arrTemp[i] <= arr[i]) { // 只要有一个没完成 // 那就是false allOff = false; $countNums.eq(i).text(arr[i]); arrTemp[i] = arrTemp[i] + 1; } } if (allOff && done) { done(); } }; }; var runTimer = run([20, 14, 6, 9], function() { // 都完成后清空定时器 clearTimeout(timer); }); var timer = setInterval(runTimer, 1000);
大致思路如此。重点就是 run 方法返回的也是一个函数。
如图:
// 回复更新
// 本质是一样的
/// 更新第三次