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 ...
随机推荐
- 我的书单(Book List)
code[class*="language-"], pre[class*="language-"] { background-color: #fdfdfd; - ...
- 探秘JS的异步单线程
对于通常的developer(特别是那些具备并行计算/多线程背景知识的developer)来讲,js的异步处理着实称得上诡异.而这个诡异从结果上讲,是由js的“单线程”这个特性所导致的. 我曾尝试用“ ...
- 微信小程序实现显示和隐藏控件-头像-取值-bindblur事件
微信小程序实现显示和隐藏控件 .wxml: <view class=" {{showOrHidden?'show':'hidden'}}"></view> ...
- python面试中被问的最多的10道题
1 性能: 解析下面代码慢在哪里def strtest1(num):str='first'for i in range(num):str+="X"return str解析:pyth ...
- jQuery源码——.html()方法原理解析
在将字符串转化为html碎片时,一般会将字符串作为容器的innerHTML属性赋值.但innerHTML有很多局限性,比如我们想转化的字符串中有<script>标签并且包含一个立即执行的函 ...
- logstash解耦之redis消息队列
logstash解耦之redis消息队列 架构图如下: 说明:通过input收集日志消息放入消息队列服务中(redis,MSMQ.Resque.ActiveMQ,RabbitMQ),再通过output ...
- Chapter 4 Invitations——7
The next day, I was surprised that Jessica wasn't her usual gushing self in Trig and Spanish. 第二天,我很 ...
- Spring AOP实战例子与springmvc整合不起效果的解决办法
在使用AOP之前,首先我们先了解一下什么是AOP吧.在网上很多人将AOP翻译为“面向切面编程”,什么是面向切面?与面向对象有什么区别呢? 在回答这两个问题之前,我们先要明白切面的概念. 切面由切点与增 ...
- ajax实现文档导出及下载
做导出一直遇到个问题就是不能用ajax实现一步导出文档,即导出加下载.今天突然想到可以分开来做就上网搜了下,发现一篇比较不错的文章(http://www.cnblogs.com/zj0208/p/59 ...
- win32线程
win32线程 一丶什么是线程 在windows中常听到的就是线程.多线程.啊什么的. 这里介绍一下什么是线程. 1.线程是附属在进程中的一个执行实体.简而言之就是执行代码的. 2.每个进程至少有一个 ...