js 简单日历
源地址:https://jingyan.baidu.com/article/546ae185fa4f721149f28cbf.htm
文件:index.htm
<!DOCTYPE html> <head>
<meta charset="utf8">
<title>日历例子</title>
<script src="calendar.js"></script>
</head> <body>
<div id="main"><!-- 日历 --></div>
<script>
'use strict';
{
let rili = new Calendar({
container: 'main',
});
rili.show(11); // 12 月份
}
</script> </body> </html>
文件:calendar.js
'use strict';
class Calendar { /**
* 构造函数
* @param {string} containerId 容器Id
* @param {number} year 年份
*/
constructor({ container, year = new Date().getFullYear() }) {
this.year = year;
this.container = document.getElementById(container);
} /**
* 日历数据
* @param {number} month 月份
* @returns {array} 6行7列 日期 0~6 表示:星期天 ~ 星期六
*/
data(month) {
let week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], arr = [];
let date = new Date(this.year, month), days = this.getDays(month);
for (let x = 0, day = 1; x < 6; x++) {
arr[x] = new Array(7).fill(null);
for (let y = x ? 0 : date.getDay(); y < 7 && day <= days; y++ , day++) {
arr[x][y] = day;
}
}
arr.unshift(week)
return arr;
} /**
* 显示日历
* @param {number} month 月份
*/
show(month) {
let data = this.data(month);
let table = document.createElement('table'), tr, td, text;
table.border = 1;
for (let x = 0; x < data.length; x++) {
tr = document.createElement('tr');
table.appendChild(tr);
for (let y = 0; y < data[x].length; y++) {
td = document.createElement('td');
td.height = 24;
text = document.createTextNode(data[x][y] || " "); // 创建文本节点
td.appendChild(text);
tr.appendChild(td);
}
}
this.container.appendChild(table);
} /**
* 当月天数
* @param {number} num 月份
* @returns {number} 天数
*/
getDays(num) {
const month = [31, this.isLeapYear() ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
return month[num];
} /**
* 是否润年
* @returns {bool}
*/
isLeapYear() {
let year = this.year;
return ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) ? true : false;
}
}
js 简单日历的更多相关文章
- js超简单日历
用原生js写了一个超级简单的日历.当做是练习js中的Date类型. 思路: 获取某个日期,根据年份计算出每个月的天数. 利用Date中的getDay()知道该月份的第一天为星期几. 循环创建表格,显示 ...
- 一个js简单的日历显示效果的函数
用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格table生成,分成两个部分. 第一个部分:就是前面的第一排,我用一行<t ...
- js编写当天简单日历
之前一直很想用javascript写一个日历,但是因为完全没有好的思路, 所以迟迟没有尝试.最近在网上刚好看到用javascript编写的简单日历的例子,代码量虽然不大, 但是我觉得很好地阐述了js日 ...
- JS写一个简单日历
JS写一个日历,配合jQuery操作DOM <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- JS框架_(Laydate.js)简单实现日期日历
百度云盘 传送门 密码:71hf JavaScript日期与时间组件_____laydate.js 日期日历效果: <!DOCTYPE html> <html> <hea ...
- 2.23 js处理日历控件(修改readonly属性)
2.23 js处理日历控件(修改readonly属性) 前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如 ...
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
- js简单 图片版时钟,带翻转效果
js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
随机推荐
- 项目Alpha冲刺(团队6/10)
项目Alpha冲刺(团队6/10) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标: 完成项目Alpha版本 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 ...
- system libzip must be upgraded to version >= 0.11
PHP当前最新版本是PHP7.3,今天在尝试安装的过程中报如下错误: system libzip must be upgraded to version >= 0.11, 根据提示我们可以清楚的 ...
- Eclipse 使用前常用设置
1.常用设置的位置 Eclipse中一般的设置都是在这个位置进行设置的: 2.设置字体类型和大小 一般可以设置成这样代码比较清晰:Consolas + 常规 + 小四 3.设置各种编码 设置工作空间的 ...
- 第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
- Web Components(续)
概述 之前我们介绍了Web Components的基本概念,现在我们给出一个使用Web Components的实例代码,并且对组件化进行一些思考.记录下来,供以后开发时参考,相信对其他人也有用. 实例 ...
- Spring Boot最核心的27个注解,你了解多少?
导读 Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架Spring ...
- python中使用xlrd、xlwt和xlutils3操作Excel
简单试了下python下excel的操作,使用了xlrd.xlwt和xlutil3:xlrd可以实现excel的读取操作,xlwt则是写入excel操作,xlutils3主要是为了修改excel,简单 ...
- Android Metro风格的Launcher开发系列第三篇
前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...
- centos 7 linux系统默认ftp安装配置和部署(详细讲解)
小生接触 Linux 系统时间不长,想解决linux系统ftp安装及部署问题,折腾了大半天,终于弄出来了,将各路高手的配置方法综合了一下,如有不对之处,欢迎各位看客指正,感谢! 一.声明: 本文采用操 ...
- Netty源码分析(二):服务端启动
上一篇粗略的介绍了一下netty,本篇将详细介绍Netty的服务器的启动过程. ServerBootstrap 看过上篇事例的人,可以知道ServerBootstrap是Netty服务端启动中扮演着一 ...