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 相关文章推荐
js 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 Javascript
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
jQuery功能函数详解
Feb 01 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
May 06 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 Javascript
jQuery实现的网页左侧在线客服效果代码
Oct 23 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
JS动态给对象添加属性和值的实现方法
Oct 21 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
Oct 25 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
JavaScript面向对象精要(下部)
Sep 12 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 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与浏览器缓存的分析
2013/06/03 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
护士自荐信
2013/10/25 职场文书
大学学年自我鉴定
2013/10/28 职场文书
国窖1573广告词
2014/03/21 职场文书
公司环境卫生管理制度
2015/08/05 职场文书