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 相关文章推荐
学习YUI.Ext基础第一天
Mar 10 Javascript
JavaScript CSS修改学习第一章 查找位置
Feb 19 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
使用JavaScript动态设置样式实现代码及演示动画
Jan 25 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
Angular 4.0学习教程之架构详解
Sep 12 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
vue实现行列转换的一种方法
Aug 06 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
用session做客户验证时的注意事项
2006/10/09 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
RC4文件加密的python实现方法
2015/06/30 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
python asyncio 协程库的使用
2021/01/21 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
学校运动会广播稿范文
2014/10/02 职场文书
地震慰问信
2015/02/14 职场文书
2015年推普周活动总结
2015/03/27 职场文书
Vue.Draggable实现交换位置
2022/04/07 Vue.js