js实现简单的日历显示效果函数示例


Posted in Javascript onNovember 25, 2019

本文实例讲述了js实现简单的日历显示效果函数。分享给大家供大家参考,具体如下:

用一个函数简单的实现一个月份的日历,效果如下:

js实现简单的日历显示效果函数示例

这个日历效果有高亮显示,我实现的思维比较简单。

我把上面的日历效果用表格table生成,分成两个部分。

第一个部分:就是前面的第一排,我用一行<tr></tr>显示,这一部分表示的上个月份留下来的日期和这个月份的日期的混合日期;

第二部分:就是剩下的所有排,这里我用五行<tr></tr>显示,这一部分表示的是这个月份和下个月份的日期的混合日期。

这里为什么要用6行<tr></tr>来显示日历的效果呢?原因是有的月份跨越了6行,所以为了兼容所有的月份,只好用6行了。

下面是代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <title>js的日历</title>
 <meta name="keywords" content="关键字列表" />
 <meta name="description" content="网页描述" />
 <link rel="stylesheet" type="text/css" href="" />
 <style type="text/css">
  table tr td {
   width:27px;
   text-align:center;
  }
 </style>
 <script type="text/javascript">
 (function(){
  //获取日历的函数,参数是年份year和月份Month,默认是今年当月的日历
 function getcalendar(year,month){
  year = year ? year : new Date().getFullYear();
  //month是0开始到11结束的,获取当前月份必须加1
  month = month ? month : new Date().getMonth()+1;
  var last = new Date(year,month-1,0);
  var lastdate = last.getDate();//获取上个月的最大日期
  var lastday = last.getDay();//获取上个月最大日期的星期几
  var months = new Date(year,month,0);
  var Maxdate = months.getDate();//获取这个月最大的日期
  //获取当前的日期,为的是高亮显示当前的日期
  var today = new Date().getDate();
  var thisyear = new Date().getFullYear();
  var thismonth = new Date().getMonth()+1;
  var str = '<table><tr style="font-size:21px;font-weight:bold;"><td id="dec">\<</td> <td colspan="5">'+year+'年'+month+'月</td><td id="add">\></td></tr><tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>';
  //获取上个月在这个月份中存在的最后日期
  var remainlastdate = lastdate - lastday;
  var t = 1;
  str += '<tr>';
  for(var g=0;g<=6;g++){
  //星期是从0开始到6结束的,小于等于上个月最大星期的日期则是上个月的日期
   if(g <= lastday){
    str +='<td>'+ remainlastdate++ +'</td>';
   }else{
    //高亮显示当前日期
    if(thisyear == year && thismonth == month && today == t){
     str +='<td style="color:red;">'+ t++ +'</td>';
    //假如不是当前月份则默认1为高亮日期
    }else if((thisyear != year && t == 1) || (thismonth != month && t == 1)){
     str +='<td style="color:red;">'+ t++ +'</td>';
    }else{
    //该月份的普通日期
     str +='<td style="color:blue;">'+ t++ +'</td>';
    }
   }
  }
  str += '</tr>';
  //除去上面的部分,这个月从哪里开始
  var remainlastday = 6 - lastday + 1;
  var nextMonthday = 1;//下一个月份的开始日期
  //这里i最大值为5是为了兼容所有的月份,有的月份可能跨越6个tr
  for(var i=1;i<=5;i++){
   str += '<tr>';
   for(var j=0;j<7;j++){
    if(remainlastday <= Maxdate){
     if(thisyear == year && thismonth == month && today == remainlastday){
     str +='<td style="color:red;">'+ remainlastday++ +'</td>';
     }else{
      if((thisyear != year && remainlastday == 1) || (thismonth != month && remainlastday == 1)){
       //剩下的天数从这里开始的话,默认的第一天还是为红色
       str +='<td style="color:red;">'+ remainlastday++ +'</td>';
      }else{
       str +='<td style="color:blue;">'+ remainlastday++ +'</td>';
      }
     }
    }else{
     str +='<td>'+ nextMonthday++ +'</td>';
    }
   }
   str += '</tr>';
  }
  str +='</table>';
  return str;
 }
 return window.calendar=getcalendar;
 })();
 document.write(calendar(2018,1));
 </script>
</head>
<body>
<div id='di'></div>
</body>
</html>

上面的函数简单的实现了日历,当然,要想让这个日历变得更强大,更有意思,你还得自己动手修改一下上面的函数。

有什么bug还望读者指出。

Javascript 相关文章推荐
初识javascript 文档碎片
Jul 13 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
浏览器的JavaScript引擎的识别方法
Oct 20 Javascript
js实现点击左右按钮轮播图片效果实例
Jan 29 Javascript
jQuery实现带动画效果的多级下拉菜单代码
Sep 08 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 Javascript
Javascript中this绑定的3种方法与比较
Oct 13 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
JS函数节流和函数防抖问题分析
Dec 18 Javascript
React 实现拖拽功能的示例代码
Jan 06 Javascript
Vant picker 多级联动操作
Nov 02 Javascript
VUE.CLI4.0配置多页面入口的实现
Nov 25 #Javascript
用Golang运行JavaScript的实现示例
Nov 25 #Javascript
JS插入排序简单理解与实现方法分析
Nov 25 #Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 #Javascript
python实现迭代法求方程组的根过程解析
Nov 25 #Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 #Javascript
JavaScript交换两个变量方法实例
Nov 25 #Javascript
You might like
php中define用法实例
2015/07/30 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
环境卫生标语
2014/06/09 职场文书
计算机求职信
2014/07/02 职场文书
员工生日活动方案
2014/08/24 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
升职自我推荐信范文
2015/03/25 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
python基础之类方法和静态方法
2021/10/24 Python
Nginx配置之禁止指定IP访问
2022/05/02 Servers