javascript代码实例教程-JS 日历

发布时间:2019-04-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JS 日历脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

实现功能:

1,年份按此年份前后各10年选区范围,同时提供自由选取

2,月份选取

3,日期的点击选取

4,FF浏览器支持不好!!

:HTML+CSS+Javascript

 

 


下面的代码没有将js分离,如果需要,直接分离就可以了


<!DOCTYPE htML>
<head>
<;meta charset=&#39;utf-8' />
<script type='text/javascript' src='./nino_calendar.js' ></script>
</head>

<body>
<p id='calendar'>
</p>

</body>
<style type='text/css' >
#calendar{ margin:20px auto; width:200px;}
tr#nino_calendar_weekname,td.nino_calendar_tomonth,td.nino_calendar_nottomonth,td.nino_calendar_today{ font-family:"Arial","Microsoft Yahei"; text-align:center; padding:3px; cursor:crosshair;}
tr#nino_calendar_weekname td {background:#EEE; color:#000; }
tr#nino_calendar_weekname td:hover{background:#666; color:#FFF;}
td.nino_calendar_tomonth{ background:#EEE; color:#000;}
td.nino_calendar_tomonth:hover{background:#666; color:#FFF;}
td.nino_calendar_nottomonth{ background:#EEE; color:#FFF;}
td.nino_calendar_nottomonth:hover{background:#CCC; color:#666;}
td.nino_calendar_today{ background:#999; color:#FFF;}
td.nino_calendar_today:hover{background:#666; color:#FFF;}
input#nino_calendar_year_i,input#nino_calendar_month_i,input#nino_calendar_day_i{ width:40px;}
select#nino_calendar_year_select,select#nino_calendar_month_select{background:#444; color:#FFF;}
input#nino_calendar_b{ width:100%;}
</style>
<script type='text/javascript' >
/*
Calendar
use Nino_Calendar.setCalDays(2012,2,2)
Copyright 2013,  EI Nino
Email: Jinyachen@gmail.COM
*/
function stopBubble(){  
 if (window.event) {
  event.cancelBubble=true;
 } else {
  event = arguments[0];
  event.stopPropagation();
 }
}
VAR Nino_Calendar = {
 idName : "calendar",
 calId:"nino_calendar",
 monthDays : new Array(31,28,31,30,31,30,31,31,30,31,30,31),
 inIT: function(idName,calId){
  /*
  可选init,$1 为外部填充p的id,$2 为calendar的id和id前缀
  */
  Nino_Calendar.idName = idName;
  Nino_Calendar.calId=calId;
 },
 getMonthsDays:function (year){
   /*
   获取月份的天数
   */
  var date = new Date();
  if(arguments.length==0)
   var year=date.getFullYear();
  var monthDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  if((year%4==0)&&(year%100!=0) || (year%400==0))
  {
   monthDays[1]=29;
  }
  Nino_Calendar.monthDays=monthDays;
  return monthDays;
  },
 gettotalDays :function (d,m){
   /*
   获取总天数
   */
   if(arguments.length==0)
   {
    var d = date.getDate();
    var m = date.getMonth();
   }
   var days =0;
   var i=0
   for(; i<m; i++)
   {
    days += Nino_Calendar.monthDays[i];
   }
   return days+d;
  },
 setCalDays:function (year,month,day){
  /*
  设置日历
  */
  var date = new Date();
  if(arguments.length==0)
   var year = date.getFullYear();
  if(arguments.length<=1)
   var month = date.getMonth()+1;
  if(arguments.length<=2)
   var day = date.getDate();
  if(arguments.length==3){
   date = new Date(year,month,day);
  }

  Nino_Calendar.getMonthsDays(year);
  var cal = document.getElementById(Nino_Calendar.idName);
  var calBody="<table id='"+Nino_Calendar.calId+"'>";
  calBody +="<tr id='"+Nino_Calendar.calId+"_weekname'><td colspan=4 id='"+Nino_Calendar.calId+"_year' >"+year+" 年</td><td colspan=3 id='"+Nino_Calendar.calId+"_month' name='"+day+"' >"+month+" 月</td></tr>";
  calBody +="<tr id='"+Nino_Calendar.calId+"_weekname'><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>";
  month = month-1;
  var PReMonthDays = Nino_Calendar.monthDays[(month==0 ? 11 : month-1)];
  var tmp_date = new Date(year,month,1);
  preMonthDays=preMonthDays-tmp_date.getDay();
  var i=0;
  
  for(var ii=preMonthDays+1; i<tmp_date.getDay(); i++,ii++)
  {
   if(i%7==0){
    calBody +="<tr class='"+Nino_Calendar.calId+"_day_num'>";
   }
   calBody +="<td class='"+Nino_Calendar.calId+"_nottomonth' >"+ii+"</td>";
   if(i%7==6)
   {
    calBody +="</tr>";
   }
  }
  for(var ii=1; ii<=Nino_Calendar.monthDays[month]; i++,ii++)
  {
   if(i%7==0){
    calBody +="<tr class='"+Nino_Calendar.calId+"_day_num'>";
   }
   if(ii==day)
   {
    calBody +="<td class='"+Nino_Calendar.calId+"_today' >"+ii+"</td>";
   }else{
   calBody +="<td class='"+Nino_Calendar.calId+"_tomonth' >"+ii+"</td>";
   }
   if(i%7==6)
   {
    calBody +="</tr>";
   }
  }
  for(var ii=1; i<42; i++,ii++)
  {
   if(i%7==0){
    calBody +="<tr class='"+Nino_Calendar.calId+"_day_num'>";
   }
   calBody +="<td class='"+Nino_Calendar.calId+"_nottomonth' >"+ii+"</td>";

   if(i%7==6)
   {
    calBody +="</tr>";
   }
  }
  calBody +="<tr><td colspan=7><input id='"+Nino_Calendar.calId+"_year_i' type='text' />年<input id='"+Nino_Calendar.calId+"_month_i' type='text' />月<input id='"+Nino_Calendar.calId+"_day_i' type='text' />日</td></tr><tr><td  colspan=7><input id='"+Nino_Calendar.calId+"_b' type='button' value='set' /></td></tr></table>";
  cal.innerHTML=calBody;
  nino_calendar = document.getElementById(Nino_Calendar.calId);
  nino_calendar .addEventListener('click',Nino_Calendar.setHandle);
  nino_calendar_b = document.getElementById(Nino_Calendar.calId+"_b");
  nino_calendar_b.addEventListener('click',Nino_Calendar.setFromInput);
  
  document.getElementById(""+Nino_Calendar.calId+"_year_i").value=year;
  document.getElementById(""+Nino_Calendar.calId+"_month_i").value=month+1;
  document.getElementById(""+Nino_Calendar.calId+"_day_i").value=day;
  
  return calBody;
 },
 yearList:function(star,end){
  /*
  年份列表
  */
  if( document.getElementById(""+Nino_Calendar.calId+"_month_select"))
  {
   Nino_Calendar.setMonth();
  }
  var tmp_date = new Date();
  if(arguments.length==0)
  {
   var start =tmp_date.getFullYear()-10;
   var end =tmp_date.getFullYear()+10;
  }
  else if(arguments.length==1)
  {
   var end =start+10;
  }
  
  var Y = document.getElementById(""+Nino_Calendar.calId+"_year");
  var y= Y.innerHTML.substring(0,Y.innerHTML.indexOf(' '));

  var list = "<select id=/""+Nino_Calendar.calId+"_year_select/">";
  for(var i=start; i<end; i++)
  {
   if(i==y)
    list +="<option value='"+i+"'  selected=/"selected/" >"+i+"</option>";
   else list +="<option value='"+i+"' >"+i+"</option>";
  }
  list +="</select>";
  Y.innerHTML = list;
  var YS = document.getElementById(""+Nino_Calendar.calId+"_year_select");
  YS.addEventListener('change',Nino_Calendar.setYear);
  
  stopBubble();
 },
 setYear:function(){
  var Y = document.getElementById(""+Nino_Calendar.calId+"_year");
  var YS = document.getElementById(""+Nino_Calendar.calId+"_year_select");
  Y.innerHTML = YS.value+" 年";
  Nino_Calendar.setCal();
 },
 monthList:function(){
  if( document.getElementById(""+Nino_Calendar.calId+"_year_select"))
  {
   Nino_Calendar.setYear();
  }
  var M = document.getElementById(""+Nino_Calendar.calId+"_month");
  var Y = document.getElementById(""+Nino_Calendar.calId+"_year");
  var y= Y.innerHTML.substring(0,Y.innerHTML.indexOf(' '));
  var m= M.innerHTML.substring(0,M.innerHTML.indexOf(' '));
  Nino_Calendar.getMonthsDays(y);
  var list = "<select id=/""+Nino_Calendar.calId+"_month_select/">";
  for(var i=1; i<=12; i++)
  {
   if(i==m){
    list +="<option value='"+i+"'  selected=/"selected/" >"+i+"</option>";
   }
   else{
    list +="<option value='"+i+"' >"+i+"</option>";
   }
  }
  list +="</select>";
  M.innerHTML = list;
  var MS = document.getElementById(""+Nino_Calendar.calId+"_month_select");
  MS.addEventListener('change',Nino_Calendar.setMonth);
 },
 setMonth:function(){
  var M = document.getElementById(""+Nino_Calendar.calId+"_month");
  var MS = document.getElementById(""+Nino_Calendar.calId+"_month_select");
  M.innerHTML = parseInt(MS.value)+" 月";
  
  Nino_Calendar.setCal();
 },
 setDay:function(day){
  var M = document.getElementById(""+Nino_Calendar.calId+"_month");
  M.setattribute('name',day);
  Nino_Calendar.setCal();
 },
 setHandle:function(){
  
  if((typeof event)=="undefined")
   event = arguments[0];
  var obj = event.srcElement ? event.srcElement:event.target;
  var obj_id = obj.getAttribute('id');
  switch(obj_id){
   case ""+Nino_Calendar.calId+"_year":
   {
    Nino_Calendar.yearList();
    
    break;
   }
   case ""+Nino_Calendar.calId+"_month":
   {
    Nino_Calendar.monthList();
    break;
   }
   default:
   { 
    if(obj.classname==""+Nino_Calendar.calId+"_nottomonth"){
     break;
    }
    day = obj.innerHTML;
    if(parseInt(day)>0&&parseInt(day)<=31)
    Nino_Calendar.setDay(day);
    break;
   }
  
  }
  stopBubble();
 },
 setCal:function(){
  var Y = document.getElementById(""+Nino_Calendar.calId+"_year");
  var M = document.getElementById(""+Nino_Calendar.calId+"_month");
  var yv= Y.innerHTML.substring(0,Y.innerHTML.indexOf(' '));
  var mv= M.innerHTML.substring(0,M.innerHTML.indexOf(' '));
  var dv= M.getAttribute('name');
  
  Nino_Calendar.setCalDays(yv,mv,dv);
 
 },
 setFromInput:function(){
  var yv=parseInt(document.getElementById(""+Nino_Calendar.calId+"_year_i").value);
  var mv=parseInt(document.getElementById(""+Nino_Calendar.calId+"_month_i").value);
  var dv=parseInt(document.getElementById(""+Nino_Calendar.calId+"_day_i").value);
  
  Nino_Calendar.setCalDays(yv,mv,dv);
 
 },
}
Nino_Calendar.init("calendar","nino_calendar");
Nino_Calendar.setCalDays();

 

 

 

</script>
</html>

 

 


效果:

 JS 日历
 

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JS 日历全部内容,希望文章能够帮你解决javascript代码实例教程-JS 日历所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。