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 ...
随机推荐
- Python math库常用函数
math库常用函数及举例: 注意:使用math库前,用import导入该库>>> import math 取大于等于x的最小的整数值,如果x是一个整数,则返回x>>> ...
- 使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
1.下载打开Consul 笔者是windows下面开发的(也可以使用Docker). 官网下载windows的Consul https://www.consul.io/ 使用cmd窗口打开,输入con ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- 一个需求认识CSS3 的transform-origin属性
最近遇到一个需求,是以前做PHP的同事问我的问题 下面是他在百度发的问题截图 根据上面的截图,我稍微梳理了一下 问题:现在有个div,旋转45度后,这个div的宽度会动态改变,并且要向右上方偏移 ...
- ueditor编辑器显示style标签样式
在使用ueditor编辑器中,想保存style标签的样式需要对js配置文件进行修改.官方为了安全考虑,默认会将style标签转为DIV标签,导致样式不能显示出对应的效果. 基于1.4.3版本修改如下 ...
- 树莓派MQTT客户端搭建
树莓派安装和实现MQTT协议 下载Mosquitto 更新软件源:sudo apt-get update 下载g++编译器:sudo apt-get install g++ 安装:sudo apt- ...
- java并发编程知识点备忘
最近有在回顾这方面的知识,稍微进行一些整理和归纳防止看了就忘记. 会随着进度不断更新内容,比较零散但尽量做的覆盖广一点. 如有错误烦请指正~ java线程状态图 线程活跃性问题 死锁 饥饿 活锁 饥饿 ...
- Flume的各种类型的组件介绍
1. Source NetCat Source:绑定的端口(tcp.udp),将流经端口的每一个文本行数据作为Event输入: type:source的类型,必须是netcat. bind:要监听 ...
- Plugin with id 'com.novoda.bintray-release' not found.的解决方案
import Module的时候,有时候会提示Plugin with id 'com.novoda.bintray-release' not found. 点击Open File,定位到该Module ...
- iOS逆向开发(1):基础工具 | ssh | scp | socat
小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情 ...