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 相关文章推荐
JSON扫盲帖 JSON.as类教程
Feb 16 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
js兼容火狐获取图片宽和高的方法
May 21 Javascript
JavaScript获取URL中参数querystring的方法详解
Oct 11 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
Sep 15 Javascript
vue接入腾讯防水墙代码
May 07 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 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 代码优化的42条建议 推荐
2009/09/25 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP简单日历实现方法
2016/07/20 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
Preload基础使用方法详解
2020/02/03 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
python编程使用协程并发的优缺点
2018/09/20 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
虚拟机下载python是否需要联网
2020/07/27 Python
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
群众路线党员个人剖析材料
2014/10/08 职场文书
竞聘书的秘诀
2019/04/02 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python