亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) 微信小程式 小程式開發(fā) 日曆簽到小程式的實(shí)現(xiàn)

日曆簽到小程式的實(shí)現(xiàn)

Jan 26, 2021 am 09:36 AM
小程式 日曆

日曆簽到小程式的實(shí)現(xiàn)

首先我們來(lái)看看最終的效果圖:

(學(xué)習(xí)影片分享:程式設(shè)計(jì)入門

日曆簽到小程式的實(shí)現(xiàn)

#下面我們來(lái)介紹實(shí)作想法:

首先,我們要取得的無(wú)非就是每一個(gè)格子裡面的資料。

先取得月,然後點(diǎn)擊月切換到另一個(gè)月,到了界線的時(shí)候到了上/下年即可。

那麼,怎麼取得月的資料呢,可以看到月第一天都是1開始,然後xx天,例如1月31天,我們把它列舉出來(lái)。

但是月份受到年份影響,所以計(jì)算是否閏年就完成了。

上程式碼
取得這個(gè)月的7*5列表

let getMothList = (year, month) => {
    var star = new Date(Date.UTC(year, month - 1, 1)).getDay()
    let mn = getMothNum(year)[month - 1]
    var res = []
    var row = []
    new Array(35)
        .fill('')
        .map((_, i) => i - star + 1)
        .map(e => 
            (e > 0 && e <= mn)
            ? ({
                date: `${year}/${month}/${e}`,
                number: e 
            })
            : (null)
        )
        .forEach((item, i) => {
            row.push(JSON.parse(JSON.stringify(item)))
            if((i + 1) % 7 == 0){
                res.push(row)
                row = []
            }
        })
    return res
}

然後取得月

var getMaxY = y =>  Boolean(
	y % 4 ==0 && y % 100 != 0 || y % 400==0
)
var getAugNum = n => getMaxY(n) ? 29 : 28
// --獲取年對(duì)應(yīng)的月份
var getMothNum = y => ([ 31, getAugNum(y), 31, 30,  31, 30, 31,31, 30, 31, 30, 31 ])

我上面js就這些了(還差上下月切換的沒說(shuō)哈)

但是少了中文的月份,有需要的這個(gè)可以再匹配

var mothZh = [&#39;一&#39;,&#39;二&#39;,&#39;三&#39;,&#39;四&#39;,&#39;五&#39;,&#39;六&#39;,&#39;七&#39;,&#39;八&#39;,&#39;九&#39;,&#39;十&#39;,&#39;十一&#39;,&#39;十二&#39;].map(e => e + &#39;月&#39;)

然後就是上下月月份了

  up(e){
    var data = e.currentTarget.dataset
    if(data.data == &#39;上&#39;){
      if(this.data.dateM > 1){
        var dateM = this.data.dateM
        var dateY = this.data.dateY
        this.setDate(dateY, dateM - 1)
      }else{
        var dateY = this.data.dateY
        this.setDate(dateY - 1, 12)
      }
    }
  },
  down(e){
    var data = e.currentTarget.dataset
    if(data.data == &#39;下&#39;){
      if(this.data.dateM < 12){
        var dateM = this.data.dateM
        var dateY = this.data.dateY
        this.setDate(dateY, dateM + 1)
      }else{
        var dateY = this.data.dateY
        this.setDate(dateY + 1, 1)
      }
    }
  },

上下月操作好了就是更新數(shù)據(jù)了,更新數(shù)據(jù)的時(shí)候,因?yàn)樾〕淌讲荒茉趘iew裡面寫邏輯,所以我們?cè)趍pa裡面操作(這是我的業(yè)務(wù)邏輯,你們不用管他,我之所以放出來(lái)是方便大家查看)

  setDate(dateY, dateM){
    var date_list = getMothList(dateY, dateM)
    .map(e => !e ? e : e.map(day => {
      var cat_date = this.data.cat_date
      return !day ? day : {
        ...day,
        className: this.data.chckin_list.indexOf(day.date) != -1 ? &#39;checkin&#39; : &#39;&#39;,
        sign: day.date == [cat_date.y, cat_date.m, cat_date.d].join(&#39;/&#39;),
        maxToday: +(Date.UTC(day.date.split(&#39;/&#39;)[0], day.date.split(&#39;/&#39;)[1] - 1, +(day.date.split(&#39;/&#39;)[2])))
          > Date.UTC(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()),
      }
    }))
    this.setData(({
      dateY,
      dateM,
      date_list,
    }))
    // 獲取月和修改的時(shí)候,獲取簽到列表
    this.setSign(dateY, dateM)
    // console.log(date_list)
  },

然後會(huì)注意到,這裡有一個(gè)chckin_list,這個(gè)就是要渲染出來(lái)的啦。 view

<view class="week">
            <view class="flex" wx:for="{{date_list}}" wx:key="index" wx:for-item="row">
                <view 
                class="day {{day.maxToday ? &#39;maxToday&#39; : &#39;&#39;}}" 
                wx:for="{{row}}" wx:for-index="row_idx" wx:for-item="day" wx:key="row_idx"
                bind:tap="tapDay"
                data-day="{{day.date}}"
                >
                    <block wx:if="{{day}}">
                        <text class="block to_day_block  {{day.sign ? &#39;select_date&#39; : &#39;&#39;}}" wx:if="{{toDay == day.date}}">今</text>
                        <text class="block  {{day.sign ? &#39;select_date&#39; : &#39;&#39;}}" wx:else>{{day.number}}</text>
                    </block>
                    <view wx:if="{{day.className}}" class="{{day.className}}">已簽</view>
                </view>
            </view>
        </view>

上面是我的業(yè)務(wù)邏輯,其實(shí)只需要if,day就行了,因?yàn)槌丝盏?,其他都需要渲染。但一般業(yè)務(wù)也有是否簽到啊,今天以後的灰色不可點(diǎn)擊?。ㄟ@裡沒有不可點(diǎn)擊是因?yàn)橛胏ss禁用點(diǎn)擊)

其他

之所以沒放css,大家css還是自己寫吧,如果真有需要,在下面評(píng)論。

哦, 如果要看效果,去小程式裡面搜尋《初九背單字》,點(diǎn)擊日曆(一個(gè)是首頁(yè)完成今日任務(wù),一個(gè)是我的->背單字天數(shù))

(如果有需要,我可以說(shuō)下簽到後臺(tái)是怎麼做的,nodejs)

--好了--

就這樣了,晚安

#- -- 更新部分---

(樓下有人提醒(毛毛飯),3月最後一個(gè)31號(hào)的不見了,我檢查了下,發(fā)現(xiàn)被剪切了,因?yàn)? * 7並不能完整展示出來(lái))

修復(fù)後的圖

日曆簽到小程式的實(shí)現(xiàn)

改變部分就是,動(dòng)態(tài)載入行。

是基於上面的程式碼,加上一個(gè)判斷

日曆簽到小程式的實(shí)現(xiàn)

先在前面的35改成6*7。因?yàn)槎嗉恿艘恍?。然後再判斷是否有空閒位置,去掉即可。

 row.map(e => e || &#39;&#39;).join(&#39;&#39;) !== &#39;&#39;

--完--

相關(guān)推薦:小程式開發(fā)教學(xué)

#

以上是日曆簽到小程式的實(shí)現(xiàn)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
win11雙螢?zāi)恍惺聲言诘诙_(tái)顯示器上不存在怎麼辦? win11雙螢?zāi)恍惺聲言诘诙_(tái)顯示器上不存在怎麼辦? Jun 12, 2024 pm 05:47 PM

在Windows11中組織日常工作和例行公事的重要工具是在工作列中顯示時(shí)間和日期。此功能通常位於螢?zāi)坏挠蚁陆?,可讓您即時(shí)存取時(shí)間和日期。透過(guò)點(diǎn)擊此區(qū)域,您可以調(diào)出日曆,從而更輕鬆地檢查即將到來(lái)的約會(huì)和日期,而無(wú)需打開單獨(dú)的應(yīng)用程式。但是,如果您使用多個(gè)顯示器,則此功能可能會(huì)遇到問題。具體來(lái)說(shuō),雖然時(shí)鐘和日期顯示在所有連接的顯示器上的任務(wù)欄上,但點(diǎn)擊第二個(gè)顯示器上的日期和時(shí)間來(lái)顯示日曆的功能不可用。截至目前,此功能僅在主顯示幕上起作用-它與Windows10不同,在Windows10中,按一下任

win10日曆顯示週數(shù) win10日曆顯示週數(shù) Jan 04, 2024 am 08:41 AM

很多用戶想要透過(guò)win10日曆這個(gè)工具來(lái)查看當(dāng)前天數(shù),但是日曆不會(huì)自動(dòng)顯示這一功能,其實(shí)我們只需要通過(guò)簡(jiǎn)單的設(shè)置,就能夠看到今年的累計(jì)週數(shù)了哦~win10日曆顯示週數(shù)設(shè)定教學(xué):1、在桌面左下角的搜尋中輸入日曆並且開啟應(yīng)用程式。 2.在開啟的日曆應(yīng)用程式中,點(diǎn)擊左下角的「齒輪」圖示後,會(huì)在右側(cè)彈出設(shè)置,我們點(diǎn)擊「日曆設(shè)定」3、繼續(xù)在開啟的日曆設(shè)定中,找到「週數(shù)」然後將週數(shù)選項(xiàng)調(diào)整到“一年中的第一天”即可。 4.在完成以上設(shè)定後,點(diǎn)擊「週」即可看到今年的周數(shù)統(tǒng)計(jì)了。

無(wú)法開啟win10右下角的行事曆 無(wú)法開啟win10右下角的行事曆 Dec 26, 2023 pm 05:07 PM

有使用win0系統(tǒng)的小夥伴有遇見win10日曆打不開的情況,這個(gè)是正常的電腦的小故障而已,在win10系統(tǒng)的隱私設(shè)定裡可以解決,今天小編帶來(lái)了詳細(xì)的解決方法,下面大家一起來(lái)看看吧。 win10右下角的行事曆打不開解決方法1、在win10系統(tǒng)中點(diǎn)選開始→點(diǎn)擊上方的程式清單按鈕→往下找到拼音(中文)R→行事曆2、初次使用,可能新事件會(huì)點(diǎn)不開(滑鼠靠上去,不會(huì)有選取的深藍(lán)色),可以在隱私中設(shè)定一下。點(diǎn)擊桌面左上方的三道槓圖示→底部就會(huì)有設(shè)定選單;3、在彈出的介面中點(diǎn)擊隱私;4、如果之前使用過(guò)設(shè)置,可以點(diǎn)擊左

Outlook行事曆不同步; Outlook行事曆不同步; Mar 26, 2024 am 09:36 AM

如果您的Outlook行事曆無(wú)法與Google行事曆、Teams、iPhone、Android、Zoom、Office帳號(hào)等同步,請(qǐng)執(zhí)行下列步驟來(lái)解決問題。日曆應(yīng)用程式可以連接到其他日曆服務(wù),例如Google日曆、iPhone、安卓、微軟Office365等,這是非常有用的,因?yàn)樗梢宰詣?dòng)同步。但如果OutlookCalendar無(wú)法與第三方日曆同步怎麼辦?可能的原因可能是選擇錯(cuò)誤的日曆進(jìn)行同步,日曆不可見,後臺(tái)應(yīng)用程序幹?jǐn)_,過(guò)時(shí)的Outlook應(yīng)用程序或日曆應(yīng)用程序,等等。修復(fù)Outlook日曆不同步的初步

如何阻止Outlook自動(dòng)將事件新增到我的日曆 如何阻止Outlook自動(dòng)將事件新增到我的日曆 Feb 26, 2024 am 09:49 AM

作為電子郵件管理器應(yīng)用程序,MicrosoftOutlook允許我們安排活動(dòng)和約會(huì)。它透過(guò)提供在Outlook應(yīng)用程式中建立、管理和追蹤這些活動(dòng)(也稱為事件)的工具,使我們能夠保持有序。然而,有時(shí)會(huì)將不需要的事件加入Outlook中的日曆中,這會(huì)對(duì)使用者造成混亂,並向日曆發(fā)送垃圾郵件。在本文中,我們將探討可協(xié)助我們防止Outlook自動(dòng)將事件新增至我的日曆中的各種方案和步驟。 Outlook活動(dòng)-簡(jiǎn)要概述Outlook事件具有多種用途,並具有許多有用的功能,具體如下:日曆整合:在Outlook

win10日曆事件沒有彈跳窗提醒怎麼辦?win10日曆事件提醒沒了的恢復(fù)方法 win10日曆事件沒有彈跳窗提醒怎麼辦?win10日曆事件提醒沒了的恢復(fù)方法 Jun 09, 2024 pm 02:52 PM

行事曆可以幫助使用者記錄你的行程,甚至可以設(shè)定提醒,但是也有不少的使用者在詢問win10行事曆事件提醒不彈出怎麼辦?使用者可以先檢查windows更新狀況或是清除windows應(yīng)用程式商店快取來(lái)進(jìn)行操作就可以了。以下就讓本站來(lái)為使用者來(lái)仔細(xì)的介紹一下win10日曆事件提醒不彈出問題解析吧。新增日曆事件在系統(tǒng)選單中點(diǎn)選「日曆」程式?;笞箧I點(diǎn)擊日曆中的日期。在編輯視窗輸入事件名稱和提醒時(shí)間,點(diǎn)選「儲(chǔ)存」按鈕即可新增事件了。 win10日曆事件提醒不彈出問題解決

使用Python開發(fā)微信小程式 使用Python開發(fā)微信小程式 Jun 17, 2023 pm 06:34 PM

隨著行動(dòng)互聯(lián)網(wǎng)技術(shù)和智慧型手機(jī)的普及,微信成為了人們生活中不可或缺的一個(gè)應(yīng)用。而微信小程式則讓人們可以在不需要下載安裝應(yīng)用程式的情況下,直接使用小程式來(lái)解決一些簡(jiǎn)單的需求。本文將介紹如何使用Python來(lái)開發(fā)微信小程式。一、準(zhǔn)備工作在使用Python開發(fā)微信小程式之前,需要先安裝相關(guān)的Python函式庫(kù)。這裡推薦使用wxpy和itchat這兩個(gè)函式庫(kù)。 wxpy是一個(gè)微信機(jī)器

實(shí)作微信小程式中的卡片翻轉(zhuǎn)特效 實(shí)作微信小程式中的卡片翻轉(zhuǎn)特效 Nov 21, 2023 am 10:55 AM

實(shí)作微信小程式中的卡片翻轉(zhuǎn)特效在微信小程式中,實(shí)現(xiàn)卡片翻轉(zhuǎn)特效是一種常見的動(dòng)畫效果,可以提升使用者體驗(yàn)和介面互動(dòng)的吸引力。以下將具體介紹如何在微信小程式中實(shí)現(xiàn)卡片翻轉(zhuǎn)的特效,並提供相關(guān)程式碼範(fàn)例。首先,需要在小程式的頁(yè)面佈局檔案中定義兩個(gè)卡片元素,一個(gè)用於顯示正面內(nèi)容,一個(gè)用於顯示背面內(nèi)容,具體範(fàn)例程式碼如下:&lt;!--index.wxml--&gt;&l

See all articles