微信小程序連續(xù)簽到7天積分獲得功能的示例代碼
每周每天簽到獲得積分的案例
功能設(shè)計(jì):計(jì)算每天簽到得1分,顯示得到的簽到積分,連續(xù)簽到3天[周一二三]即得+多3分,連續(xù)簽到7天[周一二三四五六日]+多7分,沒有連續(xù)即不顯示多余的3分或7分的提示…
wxml結(jié)構(gòu):
<!--pages/signIn2/signIn2.wxml--> <view class='sign-new'> <view class='in'> <view class='new-head'> <view class='sig-tl'> <view class='tln'>已連續(xù)簽到<label class='n'>{{newSignNum}}</label>天</view> <view class='tlf'>積分:<label class='f'>{{newSignIntegral}}</label></view> </view> <!-- 未簽到 --> <view wx:if='{{!newSignBtnState}}' class='sig-qiu sig-qiu-no' bindtap='bindSignFn' > <label class='ti'>簽到</label> </view> <!-- 已簽到 --> <view wx:else class='sig-qiu sig-qiu-yes'> <label class='ti'>已簽到</label> </view> </view> <view class='new-week' > <view class='we-mod'> <view class='mo-fen'> <label class='f f3' wx:if='{{continuityDays3}}'>+3積分</label> <label class='f f7' wx:if='{{continuityDays7}}'>+7積分</label> </view> <view class='mo-line'> <block wx:for="{{isNewSignedArr}}" wx:for-item="v" wx:key="k"> <label class="q {{v.isSigned?'hover':''}}"></label> </block> </view> <view class='mo-ri'> <block wx:for="{{isNewSignedArr}}" wx:for-item="v" wx:key="k"> <label class="t">{{v.day}}</label> </block> </view> </view> </view> </view> </view>
js方法:
Page({ /** * 頁(yè)面的初始數(shù)據(jù) */ data: { newSignBtnState: false, //按鈕簽到狀態(tài) continuityDays7: false, //連續(xù)7 continuityDays3: false, //連續(xù)3 myToday: '', //周幾 newSignNum: 0, //簽到天數(shù) newSignIntegral:0, //簽到積分 //簽到數(shù)組 isNewSignedArr: [ { "day": "一", "isSigned": false }, { "day": "二", "isSigned": false }, { "day": "三", "isSigned": false }, { "day": "四", "isSigned": false }, { "day": "五", "isSigned": false }, { "day": "六", "isSigned": false }, { "day": "日", "isSigned": false } ], }, //-------點(diǎn)擊簽到--------- bindSignFn(e){ var that = this, newSignNum = that.data.newSignNum, today = that.data.myToday; const arr = [], newSignArr = [...arr, ...that.data.isNewSignedArr]; // today = today - 1 > 0 ? today - 1 : 6; newSignArr[today].isSigned = true; //當(dāng)前積分 newSignNum++; var curFen = that.data.newSignIntegral + 1; that.setData({ newSignBtnState: true, newSignNum: newSignNum, newSignIntegral: curFen, isNewSignedArr: newSignArr, }) that.signAddFen(); }, //簽到積分函數(shù) //連續(xù) 天數(shù)-積分: 周三+3:周一,周二,周三(1+1+3=5); 周六+7:周日到周六(1+1+3+1+1+1+7=15) signAddFen(e) { var that = this, oneIsSigned = that.data.isNewSignedArr[0].isSigned, twoIsSigned = that.data.isNewSignedArr[1].isSigned, threeIsSigned = that.data.isNewSignedArr[2].isSigned, fourIsSigned = that.data.isNewSignedArr[3].isSigned, fiveIsSigned = that.data.isNewSignedArr[4].isSigned, sixIsSigned = that.data.isNewSignedArr[5].isSigned, sevenIsSigned = that.data.isNewSignedArr[6].isSigned; // 另外加分-黃色小框顯示 周三+3 , 周日+7 if (oneIsSigned && twoIsSigned && that.data.myToday == 3) { that.setData({ continuityDays3: true }) } else if (oneIsSigned && twoIsSigned && threeIsSigned && fourIsSigned && fiveIsSigned && sixIsSigned && that.data.myToday == 0) { that.setData({ continuityDays7: true }) } //簽到后執(zhí)行 if (that.data.newSignBtnState) { // 周三 : 一 二 三 if (oneIsSigned && twoIsSigned && threeIsSigned) { var fens = that.data.newSignIntegral + 3 - 1; that.setData({ newSignIntegral: fens }) } // 所有簽了: 一 二 三 四 五 六 日 if (oneIsSigned && twoIsSigned && threeIsSigned && fourIsSigned && fiveIsSigned && sixIsSigned && sevenIsSigned) { var fens = that.data.newSignIntegral + 7 - 1; that.setData({ newSignIntegral: fens }) } } }, /** * 生命周期函數(shù)--監(jiān)聽頁(yè)面加載 */ onLoad: function (options) { var that = this, myDate = new Date(), myToday = myDate.getDay(); //周幾 0 1 2 3 4 5 6 that.setData({ myToday: myToday }) that.signAddFen(); }, })
有什么錯(cuò)誤或優(yōu)化的地方,可以提出來(lái),大家一起學(xué)習(xí)研究…
完整案例可訪問(wèn)本人github:https://github.com/xiexikang/xcx-signIn
ps:
[微信小程序:以7天為周期,連續(xù)簽到7天功能效果]
到此這篇關(guān)于微信小程序連續(xù)簽到7天積分獲得功能的示例代碼的文章就介紹到這了,更多相關(guān)微信小程序簽到功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS桶排序的簡(jiǎn)單理解與實(shí)現(xiàn)方法示例
這篇文章主要介紹了JS桶排序的簡(jiǎn)單理解與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了js桶排序的概念、原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦share.js
腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦share.js...2006-12-12javascript 流暢動(dòng)畫實(shí)現(xiàn)原理
瀏覽器目前來(lái)說(shuō)是沒有抗鋸齒效果的(將來(lái)不一定哦),這樣dom元素外觀的改變就被限制在1個(gè)像素為最佳效果。2009-09-09js實(shí)現(xiàn)列表循環(huán)滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)列表循環(huán)滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07JS highcharts實(shí)現(xiàn)動(dòng)態(tài)曲線代碼示例
這篇文章主要介紹了JS highcharts實(shí)現(xiàn)動(dòng)態(tài)曲線代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-102019 年編寫現(xiàn)代 JavaScript 代碼的5個(gè)小技巧(小結(jié))
這篇文章主要介紹了2019 年編寫現(xiàn)代 JavaScript 代碼的5個(gè)小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01javascript 計(jì)算兩個(gè)整數(shù)的百分比值
用來(lái)計(jì)算兩個(gè)整數(shù)的百分比值的代碼,需要的可以看看。2009-12-12