JavaScript实现简单日历效果


Posted in Javascript onSeptember 11, 2020

本文实例为大家分享了JavaScript实现简单日历效果的具体代码,供大家参考,具体内容如下

实现效果:

根据所选择的年月,列出当月对应是周几,效果图如下:

JavaScript实现简单日历效果

实现思路:

1、使用select标签保存年月的所选菜单。使用table标签保存当月天数,表头为固定的周日周一等。

2、使用option对象,给年月循环赋值。

3、将每月的天数保存到数组中,根据所选的年月获取当月的天数,以及当月一号对应周几,对应周几就在第一行先打印几个空格,然后从一号开始依次打印当月天数。

4、刷新年月时,清除上次表格中(除表头的周)的数据,重新填入数据。

代码实现:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <!--CSS样式-->
 <style type="text/css">
 *{margin: 0px;padding: 0px;}
 #div{width: 400px;height: 300px;border: 1px solid red;margin: auto;}
 #div div:nth-child(1){display: flex;align-items: center;justify-content: center;}
 #tbcal{border-collapse: collapse;width: 100%;text-align: center;}
 #tbcal tr td{border: 1px solid red;}
 </style>
 <script type="text/javascript">
// 加载完HTML内容后,JavaScript开始执行
 window.onload=function(){
 initial();
 document.getElementById("selyear").onchange=show;
 document.getElementById("selmonth").onchange=show;
 show();
 }
// 显示日历
 function show(){
// 获取鼠标点击所选择的年月值
 var year=parseInt(document.getElementById("selyear").value);
 var month=parseInt(document.getElementById("selmonth").value);
// 判断是否为闰年,以便确定2月的天数
 var flag=year%4==0&&year%100!=0||year%400==0;
 var dayofmonth=[31,flag?29:28,31,30,31,30,31,31,30,31,30,31];
// 给date赋值,值为所选择的某年某月一号
 var dt=new Date();
 dt.setFullYear(year);
 dt.setMonth(month-1);
 dt.setDate(1);
// 获取date对应周几
 var week=dt.getDay();
// 当月应该打印多少行
 var rows=Math.ceil((dayofmonth[dt.getMonth()]+week)/7);
 var k=0;
// 如果表格中有除表头外的数据,进行数据删除,避免上次月份的数据对下次有影响
 var table=document.getElementById("tbcal");
 while(table.rows.length>1){
  table.deleteRow(1);
  
 }
// 循环向表格中添加数据,生成日历
 for(var i=0;i<rows;i++){
  var row=table.insertRow(i+1);
  for(var j=0;j<7;j++){
  var cell=row.insertCell(j);
  k++;
  if(k<=week || k>dayofmonth[dt.getMonth()]+week){
  cell.innerHTML="";
  }
  else{
  cell.innerHTML=k-week;
  }
  }
 }
 }
// 通过option对象向年月中循环赋值
 function initial(){
 var years=document.getElementById("selyear");
 var months=document.getElementById("selmonth");
 for (var i=1990;i<2019;i++) {
  var option=document.createElement("option");
  option.text=i;
  years.add(option);
 }
 for (var i=1;i<13;i++) {
  var option=document.createElement("option");
  option.text=i;
  months.add(option);
 }
 }
 </script>
 </head>
 <body>
 <div id="div">
 <!--定义年月菜单-->
 <div>
 <select id="selyear"></select> 年 
 <select id="selmonth"></select> 月 
 </div>
 <div>
 <!--定义列表-->
 <table id="tbcal">
  <tr>
  <td>周日</td>
  <td>周一</td>
  <td>周二</td>
  <td>周三</td>
  <td>周四</td>
  <td>周五</td>
  <td>周六</td>
  </tr>
 </table>
 </div>
 </div>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
Prototype RegExp对象 学习
Jul 19 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
Apr 13 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
浅谈EasyUI中Treegrid节点的删除
Mar 01 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
js字符串与Unicode编码互相转换
May 17 Javascript
vue $mount 和 el的区别说明
Sep 11 #Javascript
JavaScript 判断数据类型的4种方法
Sep 11 #Javascript
jQuery实现日历效果
Sep 11 #jQuery
JS实现密码框效果
Sep 10 #Javascript
JavaScript常用工具函数库汇总
Sep 17 #Javascript
el-form 多层级表单的实现示例
Sep 10 #Javascript
详解React的回调渲染模式
Sep 10 #Javascript
You might like
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
PHP重载基础知识回顾
2020/09/10 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
python文件写入write()的操作
2019/05/14 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
学习Python需要哪些工具
2020/09/04 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
演讲稿的写法
2014/05/19 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
农村老人去世追悼词
2015/06/23 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis