当前位置: 首页 > news >正文

原生日历表

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>日历表</title><style>#day,#week {display: grid;grid-template-columns: repeat(7, 1fr);/* 7 列 */gap: 4px;width: 280px;/* 随意调 */}#day div,#week div {height: 40px;display: flex;align-items: center;justify-content: center;border: 1px solid #ccc;}</style>
</head><body><button id="addMonth">加一月</button><button id="subMonth">减一月</button><br>当前年月为:<span id="year"></span><span id="month"></span><br><div id="week"><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div id="day"></div><script>var addMonth = document.getElementById('addMonth');var subMonth = document.getElementById('subMonth');var yearDom = document.getElementById('year');var monthDom = document.getElementById('month');var dayDom = document.getElementById('day');var date = new Date();var year = date.getFullYear();var month = date.getMonth() + 1;function formartData(year, month) {var date_01 = new Date(`${year}/${month}/01`);var weekday_01 = parseInt(date_01.getDay());var monthDays = new Date(year, month, 0).getDate();var mut = [];var max = weekday_01;if (weekday_01 == 0) {max = 7;}for (var i = 1; i < max; i++) {mut.push('');}for (var j = 1; j <= monthDays; j++) {mut.push(j);}const space_day = weekday_01 == 0 ? 6 : weekday_01 - 1const obj = {'当前年月为:': year + '-' + month,'当前月共有天数为:': monthDays,'当前月第一天星期为:': weekday_01,'当前月第一天需要补空格数为:': space_day,'当前月的数组为:': mut}console.log(obj)// 渲染元素(下面是元素渲染部分,如果只看逻辑看上面部分就行)yearDom.innerText = year;monthDom.innerText = month;let num = ''// 让元素补满最后一行(最后一行格子不需要补满的话可以注释掉这段逻辑)if (mut.length <= 35) {// 五行补满五行的格子num = 35 - mut.length} else {// 六行补满六行格子num = 42 - mut.length}for (var i = 0; i < num; i++) {mut.push('')}/* 渲染日期格子,清空旧格子,防止加减月份导致的重复渲染 */dayDom.innerHTML = '';mut.forEach(day => {const div = document.createElement('div');div.textContent = day || '';dayDom.appendChild(div);});// 如果需要像windows电脑那种样式,可以给dayDom添加一个class,然后给class设置样式// 如果想要让前后空白格子处上下月时间,则每次切换月,需要执行三次,分别是上月,本月和下月,将上月的末尾数据补到本月开头,将下月首部数据补到本月末尾即可,然后加class置灰即可// 总之这种方式不依赖组件,,但是需要自己处理样式,自己写逻辑,灵活性更大// PS:萧寂}window.onload = function () {// formartData(2020, 5);formartData(year, month);}addMonth.onclick = function () {month++;if (month > 12) {month = 1;year++;}formartData(year, month);}subMonth.onclick = function () {month--;if (month < 1) {month = 12;year--;}formartData(year, month);}</script>
</body></html>
http://www.dtcms.com/a/523886.html

相关文章:

  • 做网站购买服务器多少钱三亚房地产网站制作
  • 新网站的建设工作织梦软件怎么使用域名做网站
  • 暖手宝方案开发,暖手宝MCU控制方案开发设计
  • SpringCloud启动——MybatisPlus(MP)
  • 图解Java链表反转:迭代法详解
  • SOGS压缩技术
  • SQLiteStudio下载安装图解教程(附安装包)
  • 【图像超分】论文复现:轻量化超分 | RLFN的Pytorch源码复现,跑通源码,整合到EDSR-PyTorch中进行训练、测试
  • 吉利汽车携手阿里云函数计算,打造新一代 AI 座舱推理引擎
  • 基于mormot.net.async.pas实现一个纯粹的Socket Server
  • FastReport .NET 2026.1 全新发布: 统一Demo中心、全新Ribbon界面、Excel公式导出、Word图像质量设置等重磅升级!
  • 网站后台上传图片脚本错误个人博客大全
  • 郑州水晶奖杯制作wordpress加载优化
  • 【计算机网络笔记】第二章 应用层 (Application Layer)
  • 东营聊城网站建设seo门户网站建设
  • DigitalOcean Gradient™ 平台上线 fal 四款多模态 AI 模型:快速生成图像与音频
  • 5、服务器互连技术(小白入门版)
  • 我爱学算法之—— 分治-归并
  • 济南高新区 网站制作wordpress直接购买
  • 织梦网站首页幻灯片不显示新华美玉官方网站在线做
  • 蓝色星球如何打造能与企业共同进化的灵活系统
  • 【问题】在VSCode中设置conda的Python环境
  • NGINX 负载均衡应用实战:从配置到策略的深度解析
  • 关于buildroot文件系统中rootfs的内容,该怎么增删(瑞芯微rv1126b)
  • Qt 入门简洁笔记:信号与槽
  • 算法入门---专题二:滑动窗口2(最大连续1的个数,无重复字符的最长子串 )
  • 手机摄像头如何识别体检的色盲检查图的数字和图案(下)
  • 政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求
  • 记录一个监控网卡某个IP发送流量
  • Python-UnitTest框架