源碼如下(csdn提供了思路 , 多謝 ,第二個小程序項目,有驚無險(_。_):

1 Page({ 2 /** 3 * 頁面的初始數據 4 */ 5 data: { 6 timer: '', //定時器名字 7 countDownNum: '5' //倒計時初始值 8 }, 9 onLoad: function() { 10 this.countDown(); 11 }, 12 start: function() { 13 clearInterval(this.data.timer); 14 this.data.countDownNum = 6; 15 this.countDown(); 16 }, 17 countDown: function() { 18 let that = this; 19 let countDownNum = that.data.countDownNum; //獲取倒計時初始值 20 //如果將定時器設置在外面,那么用戶就看不到countDownNum的數值動態變化,所以要把定時器存進data里面 21 that.setData({ 22 timer: setInterval(function() { //這里把setInterval賦值給變量名為timer的變量 23 //每隔一秒countDownNum就減一,實現同步 24 countDownNum--; 25 //然后把countDownNum存進data,好讓用戶知道時間在倒計着 26 that.setData({ 27 countDownNum: countDownNum 28 }) 29 //在倒計時還未到0時,這中間可以做其他的事情,按項目需求來 30 if (countDownNum == 0) { 31 //這里特別要注意,計時器是始終一直在走的,如果你的時間為0,那么就要關掉定時器!不然相當耗性能 32 //因為timer是存在data里面的,所以在關掉時,也要在data里取出后再關閉 33 clearInterval(that.data.timer); 34 35 //關閉定時器之后,可作其他處理codes go here 36 } 37 that.data.countDownNum = 6; 38 }, 1000) 39 }); 40 } 41 })
1. 在onload載入時,緩存list數據,開始計時,調用this.countDown();(到達60s以后,再次調用本身),即可實現每一題到達60s以后自動跳轉到下一題 ->自動
2. 單題計時60s,點下一題時,清除上一題計時器,並且再次調用this.conutDwon() -> 手動;