JS实现日历表

有需要的可以用一下,这是一个简单的demo.

HTML:

<table><thead><tr><th colspan="2"><span class="left">«</span></th><th colspan="3"><span class="time"></span></th><th colspan="2"><span class="right">»</span></th></tr><tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr></thead><tbody class="main"></tbody></table>

CSS:

<style>table {width: 320px;background: #ffffff;color: #000000;}td,th {text-align: center;height: 30px;}</style>

JS:

<script>var oTime = document.querySelector(".time") //头部年月标题显示var oMain = document.querySelector(".main") //主体日历数字显示var leftBtn = document.querySelector(".left"); //点击左边的按钮,月份减少var rightBtn = document.querySelector(".right"); //点击右边的按钮,月份增加var time = new Date(); //获取当前系统时间leftBtn.onclick = function() {time.setMonth(time.getMonth() - 1);getPrevDays(time);getCurrentDays(time);minHead(time);mainList(time, getPrevDays(time), getCurrentDays(time));}rightBtn.onclick = function() {time.setMonth(time.getMonth() + 1);getPrevDays(time);getCurrentDays(time);minHead(time);mainList(time, getPrevDays(time), getCurrentDays(time));}function minHead(time) {oTime.innerText = time.getFullYear() + "年" + (time.getMonth() + 1) + "月"}function mainList(time, prevDays, currentDays) {var beforeCount = prevDays.length + currentDays.length;var cellList = document.querySelectorAll("td");for (var i = 0; i < prevDays.length; i++) { //上一个月所占格子cellList[i].innerHTML = "<font color='#D3D5DA'>" + prevDays[i] + "</font>"}for (var i = 0; i < currentDays.length; i++) { //当前月所占格子if (currentDays[i] == time.getDate()) { //当天日期高亮显示cellList[i + prevDays.length].innerHTML = "<font color='blue'>" + currentDays[i] + "</font>";} else { //当月日期白色突出cellList[i + prevDays.length].innerHTML = "<font color='#000000'>" + currentDays[i] + "</font>";}}for (var i = 1; i <= (42 - beforeCount); i++) { //下个月所占格子cellList[i + beforeCount - 1].innerHTML = "<font color='#D3D5DA'>" + i + "</font>"}}function createCells() {for (var i = 0; i < 6; i++) { //6行var oTr = document.createElement("tr");for (var j = 0; j < 7; j++) { //7列var oTd = document.createElement("td");oTr.appendChild(oTd);}oMain.appendChild(oTr);}}function getPrevDays(time) { //获得上一个在本月所占的天数var time = new Date(time); //拷贝一份时间,避免时间修改发生冲突var list = []; //上一个月所占的天数time.setDate(1); //设置成当月1号,便于查看是星期几;var day = time.getDay() == 0 ? 7 : time.getDay(); //如果是0,说明数字第一行需要空出来放上一个月的时间//获取上一个月的天数time.setDate(0); //系统自动计算到上一个月的最后一天var maxDay = time.getDate(); //得到上一个月的最后一天时间for (var i = maxDay; i > (maxDay - day); i--) {//根据maxDay和day之间的关系,把上一个月的时间放到list中list.push(i);}list.reverse(); //日期升序排列return list;}function getCurrentDays(time) { //获取当前月的天数var time = new Date(time); //拷贝时间,原因同上time.setDate(1); //确保不会出现跨越现象  如果当前时间是1月31号就会出现跨越到三月份的事情var list = [];//下面代码是为了获取上一个月的天数time.setMonth(time.getMonth() + 1) //修改时间到下一个月time.setDate(0); //修改时间日期是0var maxDay = time.getDate();//获取到上一个月的日期并放到数组中for (var i = 1; i <= maxDay; i++) {list.push(i);}return list;}createCells(); //创建6行7列表格getPrevDays(time); //获取上一个月在当前月所占的格子数getCurrentDays(time); //获取当前月所占的格子数minHead(time); //显示头部标题mainList(time, getPrevDays(time), getCurrentDays(time)); //显示主题日历</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/276928.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器翻译:跨越语言边界的智能大使

导言 机器翻译作为人工智能领域的瑰宝&#xff0c;正在以前所未有的速度和精度&#xff0c;为全球沟通拓展新的可能性。本文将深入研究机器翻译的技术原理、应用场景以及对语言交流未来的影响。 1. 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的…

100ask imx6ull 驱动(设备树)装载步骤

1.修改设备树文件 路径&#xff1a; vim 100ask_imx6ull-sdk/Linux-4.9.88/arch/arm/boot/dts/100ask_imx6ull-14x14.dtb 2. 回到linux内核目录下&#xff0c;执行命令 /*路径&#xff1a;100ask_imx6ull-sdk/Linux-4.9.88*/ make dtbs 将生成的arch/arm/boot/dts/100ask_…

蓝凌EIS智慧协同平台 SQL注入漏洞复现

0x01 产品简介 蓝凌EIS智慧协同平台是一款专为企业提供高效协同办公和团队合作的产品。该平台集成了各种协同工具和功能&#xff0c;旨在提升企业内部沟通、协作和信息共享的效率。 0x02 漏洞概述 由于蓝凌EIS智慧协同平台 UniformEntry.asp接口处未对用户输入的SQL语句进行…

python读取csv文件

在Python中&#xff0c;你可以使用pandas库来读取CSV文件。以下是一个基本的例子&#xff1a; import pandas as pd# 读取CSV文件data pd.read_csv(filename.csv)# 显示前几行数据print(data.head()) 这里&#xff0c;filename.csv应该被替换为你的CSV文件的实际路径和名称。…

如何在postman测试用例中实现断言过程解析

首先我们在postman中打开一个用例。 Respomse body&#xff1a;Contains string断言方法 (Respomse body&#xff1a;Contains string为包含断言&#xff0c;只要在结果中包含我们填写的字符&#xff0c;执行就是通过的) 1.选择Tests&#xff0c;在图片右下加选择Respomse b…

SuperMap iPortal权限介绍

作者&#xff1a;yx 文章目录 前言一、内置权限二、自定义权限&#xff08;11.1.0及以后版本&#xff09;1、修改配置文件2、页面展示3、api调用4、结果验证5、实际应用 前言 iPortal 用户访问和使用门户中资源的能力取决于其用户类型与在门户中拥有的权限&#xff0c;权限通过…

C++ 图论算法之欧拉路径、欧拉回路算法(一笔画完)

公众号&#xff1a;编程驿站 1. 欧拉图 本文从哥尼斯堡七桥的故事说起。 哥尼斯堡城有一条横贯全市的普雷格尔河&#xff0c;河中的两个岛与两岸用七座桥连结起来。当时那里的居民热衷于一个话题&#xff1a;怎样不重复地走遍七桥&#xff0c;最后回到出发点。这也是经典的一…

【ChatGLM3】第三代大语言模型多GPU部署指南

关于ChatGLM3 ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上&#xff0c; 更强大的基础模型&#xff1a; ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、…

订单系统设计-状态机

1. 状态机 1.1 状态机简介 状态机是有限状态自动机的简称&#xff0c;是现实事物运行规则抽象而成的一个数学模型。 有限状态机一般都有以下特点&#xff1a; 可以用状态来描述事物&#xff0c;并且任一时刻&#xff0c;事物总是处于一种状态&#xff1b;事物拥有的状态总数…

java基础大纲思维导图

java基础大纲思维导图 不是卖资料&#xff01;&#xff01;&#xff01;&#xff01; 一段废话&#xff1a;自己断断续续整理的一份技术大纲&#xff0c;仅作参考&#xff01;博客只作为一些知识点和经验的记录&#xff0c;真正动力来源还是得查漏补缺规划好路线和方向 先上一份…

Win11 跑通tensorRT

准备 1.安装cuda&#xff0c;成功之后文件夹如下图所示 2.下载cudnn&#xff0c;把cudnn对应的文件放在cuda里面 3.安装vs 4.安装对应cuda版本的tensorRT https://developer.nvidia.com/tensorrt-download 5.opencv安装 编译好 打开vs&#xff0c;配置环境 用vs打开tens…

ChatGPT/GPT4+AI绘图+论文高效写作结合到底有多强大?

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…