js写一个简单的日历
思路:先写一个结构和样式,然后写本月的时间,之后计算上下月份的关系
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
} li.disabled {
background: #eee;
color: #ccc;
cursor: not-allowed;
} .container {
border: 1px solid #ccc;
margin: 50px;
width: 350px;
} .container li {
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
cursor: pointer;
} .container li:not(.disabled):hover {
background: rgb(185, 238, 238);
} .container ul {
display: flex;
flex-wrap: wrap;
} li.active {
background: darkcyan;
color: #fff;
}
button{
width: 50px; background-color: rgb(28, 113, 224);
color: #fff;
}
</style>
</head> <body>
<button class="prev">上月</button>
<button class="next">下月</button>
<div class="container">
<ul>
<li>日</li>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
<li>六</li>
</ul>
<ul class='content'> </ul>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(function () { let totalDays = 0
let now = new Date()
let today = now.getDate()
let global_month = now.getMonth() + 1
let global_year = now.getFullYear() $('.prev').click(function () {
now.setMonth(now.getMonth() - 1) //6-31 7-1
initCalendar()
}) $('.next').click(function () {
now.setMonth(now.getMonth() + 1) //6-31 7-1
initCalendar()
}) function initCalendar() {
$('.content').empty()
let month = now.getMonth() + 1
let year = now.getFullYear() switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
totalDays = 31
break;
case 4:
case 6:
case 9:
case 11:
totalDays = 30
break
default:
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
totalDays = 29
} else {
totalDays = 28
}
break;
} for (let i = 1; i <= totalDays; i++) {
let li = $('<li/>').text(i)
if (i === today && year === global_year && month === global_month) li.addClass('active')
$('.content').append(li)
} now.setDate(1)
let firstDay = now.getDay()
for (let i = 0; i < firstDay; i++) {
now.setDate(now.getDate() - 1)
let li = $('<li/>').text(now.getDate()).addClass('disabled')
$('.content').prepend(li)
}
now.setDate(now.getDate() + firstDay) now.setDate(totalDays) let lastDay = 6 - now.getDay()
for (let i = 0; i < lastDay; i++) {
now.setDate(now.getDate() + 1)
let li = $('<li/>').text(now.getDate()).addClass('disabled')
$('.content').append(li)
} now.setDate(now.getDate() - lastDay)
now.setDate(1)
} initCalendar()
})
</script>
</body> </html>
js写一个简单的日历的更多相关文章
- 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”
这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...
- 使用JAVA写一个简单的日历
JAVA写一个简单的日历import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateF ...
- JS写一个简单日历
JS写一个日历,配合jQuery操作DOM <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- [NodeJS]使用Node.js写一个简单的在线聊天室
声明:教程来自<Node即学即用>.源代码案例均出自此书.博文仅为个人学习笔记. 第一步:创建一个聊天server. 首先,我们先来写一个Server: var net = require ...
- 用node.js写一个简单爬虫,并将数据导出为 excel 文件
引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...
- 用JS写一个简单的程序,算出100中7的倍数的最大值
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 用JS 写一个简单的程序,切换七彩盒子背景
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS写一个简单的程序,输入两个整数,打印这两个数的和,差,积,余数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS写一个简单的程序,判断年份是平年还是闰年
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- Java实现 蓝桥杯VIP 算法训练 奇偶判断
问题描述 能被2整除的数称为偶数,不能被2整除的数称为奇数.给一个整数x,判断x是奇数还是偶数. 输入格式 输入包括一个整数x,0<=x<=100000000. 输出格式 如果x是奇数,则 ...
- Java实现 LeetCode 287 寻找重复数
287. 寻找重复数 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 示例 ...
- Java实现 LeetCode 57 插入区间
57. 插入区间 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: inte ...
- SQL server 常用的数据库 DDL语言
use (数据库名) //切换到目标数据库 if exists (select * from sysdatabases where name='数据库名') //如果括号里面是查看有没有这个数据库 d ...
- java计算时间从什么时候开始 为什么从1970年开始 java的时间为什么是一大串数字
Date date = new Date(0); System.out.println(date); 打印出来的结果: Thu Jan 01 08:00:00 CST 1970 也是1970 年 1 ...
- java实现第六届蓝桥杯生成回文数
生成回文数 所谓回文数就是左右对称的数字,比如: 585,5885,123321- 当然,单个的数字也可以算作是对称的. 小明发现了一种生成回文数的方法: 比如,取数字19,把它与自己的翻转数相加: ...
- 04-Python基础3
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- Windows下mysql的基础操作
1.数据库表操作: - 首先启动mysql服务器,在安装mysql的目录下打开cmd窗口,运行mysql:'mysql.exe -hlocalhost -p3306 -uroot -p123456'; ...
- [原创][开源] SunnyUI.Net 安装
SunnyUI.Net, 基于 C# .Net WinForm 开源控件库.工具类库.扩展类库.多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: h ...
- 2 个步骤为 VSCode 配置工程头文件路径!
我用 VSCode 来 Coding,这个编辑器需要自己配置头文件路径,就是自动建立一个 c_cpp_properties.json 文件来管理头文件路径,然后需要用哪些库就手动加上即可,方法很简单, ...