微信小程序日历组件使用方法详解


Posted in Javascript onDecember 29, 2018

这个日历采用小程序组件化开发,有兴趣的同学可以引用本组件(怎么引用不多赘述,自行去微信小程序开发api了解)

wxml

<!--pages/components/calender.wxml-->
<view class='calender'>
<view class='operate'>
<text catchtap='reduce'>减少</text>
<text catchtap="add">增加</text>
</view>
<view class='year'>
<text>{{year}}年</text>
<text>{{currentMonth}}月</text>
</view>
<view class='week'>
<block wx:for="{{weekArr}}" wx:key="{{index}}">
<text>{{item}}</text>
</block>
</view>
<view class='date'>
<block wx:for="{{dateArr}}" wx:key="{{index}}">
<text>{{item-(weekNum-1)<=0?"":item-(weekNum-1)>yearMonth[currentMonth-1]?"":item-(weekNum-1)}}</text>
</block>
</view>
</view>

js

// pages/components/calender.js
Component({
data:{
weekArr:["日","一","二","三","四","五","六"],
yearMonth:[],
rowNum:"",
dateArr:[],
currentMonth:"",
year:"",
weekNum:""
},
created:function(){},
attached:function(){
let T = new Date()
this.setData({
currentMonth: T.getMonth() + 1,
year: T.getFullYear()
})
//判断闰年
let yeartype = (this.data.year % 4 == 0) && (this.data.year % 100 != 0 || this.data.year % 400 == 0)
if ( yeartype ){
this.setData({
yearMonth: [31, 29 , 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
})
}else{
this.setData({
yearMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
})
}
let currentMonthDay = this.data.year + "-" + this.data.currentMonth +"-01"
let weekStr = ""
this.setData({
weekNum: new Date(currentMonthDay).getDay(),
rowNum: Math.ceil((this.data.yearMonth[this.data.currentMonth] + new Date(currentMonthDay).getDay())/7)
})
for( let i=0 ; i<this.data.rowNum ; i++ ){
for( let j = 0 ; j<7 ; j++ ){
this.data.dateArr.push(i*7+j)
}
}
this.setData({
dateArr:this.data.dateArr
})
},
methods:{
//获取下一个月份
add:function(){
this.triggerEvent("addone")
this.setData({
dateArr: []
})
if (this.data.currentMonth==12 ){
this.setData({
currentMonth: 1,
year:this.data.year+1
})
}else{
this.setData({
currentMonth: this.data.currentMonth + 1
})
}
let currentMonthDay = this.data.year + "-" + this.data.currentMonth + "-01"
let weekStr = ""
this.setData({
weekNum: new Date(currentMonthDay).getDay(),
rowNum: Math.ceil((this.data.yearMonth[this.data.currentMonth-1] + new Date(currentMonthDay).getDay()) / 7)
})
for (let i = 0; i < this.data.rowNum; i++) {
for (let j = 0; j < 7; j++) {
this.data.dateArr.push(i * 7 + j)
}
}
this.setData({
dateArr: this.data.dateArr
})
},
//获取上一个月份
reduce:function(){
this.triggerEvent("reduceone")
this.setData({
dateArr:[]
})
if (this.data.currentMonth == 1) {
this.setData({
currentMonth: 12,
year: this.data.year - 1
})
} else {
this.setData({
currentMonth: this.data.currentMonth - 1
})
}
let currentMonthDay = this.data.year + "-" + this.data.currentMonth + "-01"
let weekStr = ""
this.setData({
weekNum: new Date(currentMonthDay).getDay(),
rowNum: Math.ceil((this.data.yearMonth[this.data.currentMonth-1] + new Date(currentMonthDay).getDay()) / 7)
})
for (let i = 0; i < this.data.rowNum; i++) {
for (let j = 0; j < 7; j++) {
this.data.dateArr.push(i * 7 + j)
}
}
this.setData({
dateArr: this.data.dateArr
})
console.log(this.data.dateArr)
}
}
})

wxss

/* pages/components/calender.wxss */
.operate{
width:100%;
display: flex;
flex-direction: row;
justify-content: space-around;
font-size: 32rpx;
color:#000;
padding-bottom: 40rpx;
}
.year{
padding:0 30%;
display: flex;
flex-direction: row;
justify-content: space-around;
font-size:32rpx;
color:#404040;
margin-bottom: 40rpx;
}
.calender{
display: flex;
flex-direction: column;
padding:0 4.5%;
width:91%;
border-top:1rpx solid #eaeaea;
padding-top:30rpx;
color:#404040;
}
.calender .week{
display: flex;
flex-direction: row;
}
.calender .week text{
width:14%;
text-align: center;
font-size:26rpx;
}
.calender .date text{
width:14%;
display: inline-block;
text-align: center;
font-size:26rpx;
color:#000;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
angular.element方法汇总
Jan 07 Javascript
jQuery中closest()函数用法实例
Jan 07 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
Dec 08 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
js实现图片放大展示效果
Aug 30 Javascript
vue 中directive功能的简单实现
Jan 05 Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 Javascript
JS代码编译器Monaco使用方法
Jun 11 Javascript
微信小程序自定义可滑动日历界面
Dec 28 #Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 #Javascript
微信小程序实现复选框效果
Dec 28 #Javascript
6行代码实现微信小程序页面返回顶部效果
Dec 28 #Javascript
微信小程序下拉框组件使用方法详解
Dec 28 #Javascript
微信小程序实现星级评价效果
Dec 28 #Javascript
微信小程序实现日历效果
Dec 28 #Javascript
You might like
PHP开发大型项目的一点经验
2006/10/09 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
使用正则替换变量
2007/05/05 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
JS的数组迭代方法
2015/02/05 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
js+css实现打字效果
2020/06/24 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
Python脚本处理空格的方法
2016/08/08 Python
python访问抓取网页常用命令总结
2017/04/11 Python
10个Python小技巧你值得拥有
2018/09/29 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
农民工讨薪标语
2014/06/26 职场文书
个人委托书范本汇总
2014/10/01 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
财务检查整改报告
2014/11/06 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
组织生活会发言材料
2014/12/15 职场文书
小学班级管理心得体会
2016/01/07 职场文书
高中历史教学反思
2016/02/19 职场文书
高质量“欢迎词”
2019/04/03 职场文书
导游词之日月潭
2019/11/05 职场文书
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android