javascript实现calendar

该博客展示了使用JavaScript实现日历功能的代码。包含calendar.js和calendar.jsp文件,其中定义了显示日历窗口、判断闰年、获取星期、选择日期等多个函数,通过这些函数实现了日历的显示、日期选择、年月切换等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

calendar.js的内容:
function showCalendar(id) {
 showx = event.screenX - event.offsetX - 4 - 210 ; // + deltaX;
 showy = event.screenY - event.offsetY + 18; // + deltaY;

 url = "/EduMIS/web/js/calendar/calendar.jsp?id=" + id;
 window.open(url, "日历", "height=180px; width=200px; left="+showx+"px; top="+showy+"px; status=no; directories=yes;scrollbars=no;resizable=no; "  );
}

calendar.jsp的内容:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>日历</title>
<style>
td {
 font-family: Arial, Helvetica, sans-serif;
 font-size: 12px;
}

</style>

</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="180">
<tr><td id=cc>
</td></tr></table>
</body>

<script language="JavaScript">
function RunNian(The_Year)
{
 if ((The_Year%400==0) || ((The_Year%4==0) && (The_Year%100!=0)))
  return true;
 else
  return false;
}
function GetWeekday(The_Year,The_Month)
{
 
 var Allday;
 Allday = 0;
 if (The_Year>2000)
 {
 
  for (i=2000 ;i<The_Year; i++)
   if (RunNian(i))
    Allday += 366;
   else
    Allday += 365;
  for (i=2; i<=The_Month; i++)
  {
   switch (i)
   {
    case 2 :
     if (RunNian(The_Year))
      Allday += 29;
     else
      Allday += 28;
     break;
    case 3 : Allday += 31; break;
    case 4 : Allday += 30; break;
    case 5 : Allday += 31; break;
    case 6 : Allday += 30; break;
    case 7 : Allday += 31; break;
    case 8 : Allday += 31; break;
    case 9 : Allday += 30; break;
    case 10 : Allday += 31; break;
    case 11 : Allday += 30; break;
    case 12 :  Allday += 31; break;
   
   }
  
  }
 }
 
 return (Allday+6)%7;
 

}

function chooseday(The_Year,The_Month,The_Day)
{
 var Firstday;
 var completely_date;
 if (The_Day!=0)
  completely_date = The_Year + "-" + The_Month + "-" + The_Day;
 else
  completely_date = "No Choose";
 //showdate 只是一个为了显示而采用的东西,
 //如果外部想引用这里的时间,可以通过使用 completely_date引用完整日期
 //也可以通过The_Year,The_Month,The_Day分别引用年,月,日
 //当进行月份和年份的选择时,认为没有选择完整的日期
 //showdate.innerText = completely_date;
 Firstday = GetWeekday(The_Year,The_Month);
 ShowCalender(The_Year,The_Month,The_Day,Firstday);
 
}

function clickDay(The_Year,The_Month,The_Day) {

 if(The_Month < 10) {
  The_Month = "0" + The_Month;
 }
 if(The_Day < 10) {
  The_Day = "0" + The_Day;
 }
 var Firstday;
 var completely_date;
 if (The_Day!=0)
  completely_date = The_Year + "-" + The_Month + "-" + The_Day;
 else
  completely_date = "No Choose";
 
 calendarId='<%=request.getParameter("id")%>';
 obj = eval("window.opener.document.all." + calendarId);
 obj.innerText = completely_date;
 window.close();
}

function nextmonth(The_Year,The_Month)
{
 if (The_Month==12)
  chooseday(The_Year+1,1,0);
 else
  chooseday(The_Year,The_Month+1,0);
}

function prevmonth(The_Year,The_Month)
{
 if (The_Month==1)
  chooseday(The_Year-1,12,0);
 else
  chooseday(The_Year,The_Month-1,0);
}

function prevyear(The_Year,The_Month)
{
 chooseday(The_Year-1,The_Month,0);
}

function nextyear(The_Year,The_Month)
{
 chooseday(The_Year+1,The_Month,0);
}

 

 

function ShowCalender(The_Year,The_Month,The_Day,Firstday)
{
// alert(selectedId);
 var showstr;
 var Month_Day;
 var ShowMonth;
 var today;
 today = new Date();
 
 
 
 switch (The_Month)
 {
  case 1 : ShowMonth = "一月"; Month_Day = 31; break;
  case 2 :
   ShowMonth = "二月";
   if (RunNian(The_Year))
    Month_Day = 29;
   else
    Month_Day = 28;
   break;
  case 3 : ShowMonth = "三月"; Month_Day = 31; break;
  case 4 : ShowMonth = "四月"; Month_Day = 30; break;
  case 5 : ShowMonth = "五月"; Month_Day = 31; break;
  case 6 : ShowMonth = "六月"; Month_Day = 30; break;
  case 7 : ShowMonth = "七月"; Month_Day = 31; break;
  case 8 : ShowMonth = "八月"; Month_Day = 31; break;
  case 9 : ShowMonth = "九月"; Month_Day = 30; break;
  case 10 : ShowMonth = "十月"; Month_Day = 31; break;
  case 11 : ShowMonth = "十一月"; Month_Day = 30; break;
  case 12 : ShowMonth = "十二月"; Month_Day = 31; break;
  
 }
 
 
 showstr = "";
 showstr = "<Table cellpadding=0 cellspacing=1 border=1 bordercolor=#70B8B8 width=95% align=center valign=top>" ;
 showstr +=  "<tr><td width=0 style='cursor:hand' onclick=prevyear("+The_Year+"," + The_Month + ")>&lt;&lt;</td><td width=0 bgcolor=#E6F2F2>&nbsp;" + The_Year + "&nbsp;</td><td width=0 onclick=nextyear("+The_Year+","+The_Month+")  style='cursor:hand'>&gt;&gt;</td><td width=0 style='cursor:hand' onclick=prevmonth("+The_Year+","+The_Month+")>&lt;&lt;</td><td width=100 align=center bgcolor=#E6F2F2>" + ShowMonth + "</td><td width=0 onclick=nextmonth("+The_Year+","+The_Month+")  style='cursor:hand'>&gt;&gt;</td></tr>";
 showstr +=  "<tr><td align=center width=100% colspan=6>";
 showstr +=  "<table cellpadding=0 cellspacing=0 border=1 bordercolor=#ffffff width=95%>";
 showstr += "<Tr align=center bgcolor=#ffffff> ";
    showstr += "<td></td>";
 showstr += "</Tr></table>";
 showstr +=  "<table cellpadding=1 cellspacing=1 border=0 bgcolor=#77BBFF width=95%>";
 showstr += "<Tr align=center bgcolor=#E8F3FF> ";
    showstr += "<td><font color=#000000>日</font></td>";
    showstr += "<td><font color=#000000>一</font></td>";
    showstr += "<td><font color=#000000>二</font></td>";
    showstr += "<td><font color=#000000>三</font></td>";
    showstr += "<td><font color=#000000>四</font></td>";
    showstr += "<td><font color=#000000>五</font></td>";
    showstr += "<td><font color=#000000>六</font></td>";
 showstr += "</Tr><tr>";
 
 
 for (i=1; i<=Firstday; i++)
  showstr += "<Td align=center bgcolor=#ffffff>&nbsp;</Td>";
 
 for (i=1; i<=Month_Day; i++)
 {
  if ((The_Year==today.getYear()) && (The_Month==today.getMonth()+1) && (i==today.getDate()))
   bgColor = "#FFCCCC";
  else
   bgColor = "#FFF7FF";
 
  if (The_Day==i) bgColor = "#FFFFCC";
  showstr += "<td align=center bgcolor=" + bgColor + " style='cursor:hand' onclick=clickDay(" + The_Year + "," + The_Month + "," + i + ")>" + i + "</td>";
  Firstday = (Firstday + 1)%7;
  if ((Firstday==0) && (i!=Month_Day)) showstr += "</tr><tr>";
 }
 if (Firstday!=0)
 {
  for (i=Firstday; i<7; i++)
   showstr += "<td align=center bgcolor=#ffffff>&nbsp;</td>";
  showstr += "</tr>";
 }
 
 showstr += "</tr></table>";
 showstr +=  "<table cellpadding=0 cellspacing=0 border=1 bordercolor=#ffffff width=95%>";
 showstr += "<Tr align=center bgcolor=#ffffff> ";
    showstr += "<td></td>";
 showstr += "</Tr></table></td></tr></table>";
 cc.innerHTML = showstr; 
 

}


</script>

<script language="JavaScript">

 var The_Year,The_Day,The_Month;
 var today;
 var Firstday;
 today = new Date();
 The_Year = today.getYear();
 The_Month = today.getMonth() + 1;
 The_Day = today.getDate();
 Firstday = GetWeekday(The_Year,The_Month);
 ShowCalender(The_Year,The_Month,The_Day,Firstday);
</script>
<div id=showdate></div>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值