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插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
Sep 29 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
JS闭包用法实例分析
Mar 27 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
微信小程序实现的五星评价功能示例
Apr 25 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 jQuery
Openlayers学习之加载鹰眼控件
Sep 28 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
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
javascript 打印页面代码
2009/03/24 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
js实现放大镜特效
2017/05/18 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
js实现验证码功能
2020/07/24 Javascript
python中split方法用法分析
2015/04/17 Python
详解Python文本操作相关模块
2017/06/22 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python如何读写csv数据
2018/03/21 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
会计学毕业生求职信
2014/06/25 职场文书
商场广播稿范文
2015/08/19 职场文书
2016新年问候语大全
2015/11/11 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript