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 相关文章推荐
javascript之典型高阶函数应用介绍
Jan 10 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
Dec 04 Javascript
JavaScript获取当前cpu使用率的方法
Dec 15 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
JavaScript动态添加css样式和script标签
Jul 19 Javascript
如何编写一个完整的Angular4 FormText 组件
Nov 18 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 Javascript
Vue-CLI3.x 设置反向代理的方法
Dec 06 Javascript
JavaScript实现酷炫的鼠标拖尾特效
Feb 18 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
php后门URL的防范
2013/11/12 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
pandas数据处理之绘图的实现
2020/06/15 Python
Python内置函数property()如何使用
2020/09/01 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
linux比较文件内容的命令是什么
2013/03/04 面试题
预备党员党校学习自我评价分享
2013/11/12 职场文书
护士的岗位职责
2013/12/04 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
运动会入场词60字
2014/02/15 职场文书
创业培训计划书
2014/05/03 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
工作检讨书大全
2015/01/26 职场文书
迟到检讨书
2015/01/26 职场文书
教师节班会主持词
2015/07/06 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers