求一款js做的时间日历控件?

JavaScript015

求一款js做的时间日历控件?,第1张

这是我找到的一个js做的日历,不知道是不是你要的,里面有包含时间,其实在日历里面加时间也是比较简单的,只要调用DATE的方法就可以了,希望对你有用。下面是代码段,效果图附上。

<html>

<head>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">

//定义月历函数

function calendar() {

var today = new Date() //创建日期对象

year = today.getYear() //读取年份

thisDay = today.getDate() //读取当前日

//创建每月天数数组

var monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

//如果是闰年,2月份的天数为29天

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) monthDays[1] = 29

daysOfCurrentMonth = monthDays[today.getMonth()] //从每月天数数组中读取当月的天数

firstDay = today//复制日期对象

firstDay.setDate(1) //设置日期对象firstDay的日为1号

startDay = firstDay.getDay() //确定当月第一天是星期几

//定义周日和月份中文名数组

var dayNames = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六")

var monthNames = new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月")

//创建日期对象

var newDate = new Date()

//创建表格

document.write("<TABLE BORDER='0' CELLSPACING='0' CELLPADDING='2' ALIGN='CENTER' BGCOLOR='#0080FF'>")

document.write("<TR><TD><table border='0' cellspacing='1' cellpadding='2' bgcolor='#88FF99'>")

document.write("<TR><th colspan='7' bgcolor='#C8E3FF'>")

//显示当前日期和周日

document.writeln("<FONT STYLE='font-size:9ptColor:#FF0000'>" + newDate.getYear() + "年" + monthNames[newDate.getMonth()] + " " + newDate.getDate() + "日 " + dayNames[newDate.getDay()] + "</FONT>")

//显示月历表头

document.writeln("</TH></TR><TR><TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9ptColor:White'>日</FONT></TH>")

document.writeln("<th bgcolor='#0080FF'><FONT STYLE='font-size:9ptColor:White'>一</FONT></TH>")

document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9ptColor:White'>二</FONT></TH>")

document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9ptColor:White'>三</FONT></TH>")

document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9ptColor:White'>四</FONT></TH>")

document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9ptColor:White'>五</FONT></TH>")

document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9ptColor:White'>六</FONT></TH>")

document.writeln("</TR><TR>")

//显示每月前面的"空日"

column = 0

for (i=0 i<startDay i++) {

document.writeln(" <TD><FONT STYLE='font-size:9pt'> </FONT></TD>")

column++

}

//如果是当前日就突出显示(红色),否则正常显示(黑色)

for (i=1 i<=daysOfCurrentMonth i++) {

if (i == thisDay) {

document.writeln("</TD><TD ALIGN='CENTER'><FONT STYLE='font-size:9ptColor:#ff0000'><B>")

}

else {

document.writeln("</TD><TD BGCOLOR='#88FF99' ALIGN='CENTER'><FONT STYLE='font-size:9ptfont-family:Arialfont-weight:boldColor:#000000'>")

}

document.writeln(i)

if (i == thisDay) document.writeln("</FONT></TD>")

column++

if (column == 7) {

document.writeln("<TR>")

column = 0

}

}

document.writeln("<TR><TD COLSPAN='7' ALIGN='CENTER' VALIGN='TOP' BGCOLOR='#0080FF'>")

document.writeln("<FORM NAME='time' onSubmit='0'><FONT STYLE='font-size:9ptColor:#ffffff'>")

//显示当前时间

document.writeln("当前时间:<INPUT TYPE='Text' NAME='textbox' ALIGN='TOP'></FONT></TD></TR></TABLE>")

document.writeln("</TD></TR></TABLE></FORM>")

}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">

//初始化控制变量

var timerID = null

var timerRunning = false

//定义时间显示函数

function stoptime (){

if(timerRunning)

clearTimeout(timerID)

timerRunning = false}

//定义显示时间函数

function showtime () {

var newDate = new Date()

var hours = newDate.getHours()

var minutes = newDate.getMinutes()

var seconds = newDate.getSeconds()

var timeValue = " " + ((hours >12) ? hours -12 :hours)

timeValue += ((minutes < 10) ? ":0" : ":") + minutes

timeValue += ((seconds < 10) ? ":0" : ":") + seconds

timeValue += (hours >= 12) ? " 下午 " : " 上午 "

document.time.textbox.value = timeValue

timerID = setTimeout("showtime()",1000)//设置超时,使时间动态显示

timerRunning = true}

//显示当前时间

function starttime () {

stoptime()

showtime()}

</SCRIPT>

</head>

<BODY onLoad="starttime()" TEXT="#000000" TOPMARGIN="0">

<script language="JavaScript" type="text/javascript">

calendar() //显示月历

</script>

</BODY>

</html>

<!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">

<head>

<meta http-equiv="content-type" content="text/htmlcharset=utf-8">

<title>JavaScript Sample</title>

<style type="text/css">

div #dataTextContainer

{

border:1px #A5ACB2 solid

width: 100px

height: 19px

text-align: right

float:left

}

div #dataTextContainer input

{

border-width: 0px

border-style: none

border-color: transparent

width: 68px

height: 14px

font-size: 12px

text-align: left

}

div #dataTextContainer button

{

width: 22px

height: 19px

margin: 0px

padding:0px

text-align: center

}

div #calendarContainer

{

width: 200px

height: 100px

z-index: 10000

font-size: 13px

}

</style>

<script type="text/javascript" src="inputDate.js"></script>

</head>

<body>

<div id = "dataTextContainer">

<input name="dataText" id="dateText" type="text" onfocus="javascript:getCurrentDay()"/>

<button onclick="javascript:displayCalendar()">

<img src="rili.jpg" width="15" height="12">

</button>

</div>

<div id="calendarContainer"></div>

</body>

</html>      function getCurrentDay()

     {

     var newDate = new Date

     var odate = document.getElementById("dateText")

     var date_year = newDate.getFullYear()

var date_month = newDate.getMonth() + 1

var date_today = newDate.getDate()

     odate.value = date_year+"-"+date_month+"-"+date_today

     }

     function displayCalendar()

{

drawCalendar()

}

function closeCalendar()

{

var oCalendarContainer = document.getElementById("calendarContainer")

oCalendarContainer.innerHTML = ""

}

function drawCalendar(sYear,sMonth)

{

var newDate

if(arguments[0] == null || arguments[1] == null)

{

newDate = new Date()

}

else

{

newDate = new Date(sYear,sMonth - 1)

}

var date_year = newDate.getFullYear()

var date_month = newDate.getMonth() + 1

var date_today = newDate.getDate()

var date_day = newDate.getDay()

var nextMonth = date_month + 1

var nextYear = date_year

var prevMonth = date_month - 1

var prevYear = date_year

if(sMonth == 12)

{

nextMonth = 1

nextYear = date_year + 1

}

if(sMonth == 1)

{

prevMonth = 12

prevYear = date_year - 1

}

var calendarTable = ""

calendarTable += '<table width="200" border="0" cellpadding="0" cellspacing="0" style="background-color:#0066FFtext-align:center">'

calendarTable += ' <tr style="background-color:#339999">'

//向前翻年

calendarTable += '<td colspan="2" onclick="javascript:drawCalendar('+(prevYear - 1)+','+prevMonth+')"'+

    ' style="cursor:pointerbackground-color:#FF6600"><<<</td>'

//向前翻月

calendarTable += '<td colspan="2" onclick="javascript:drawCalendar('+prevYear+','+prevMonth+')"'+

    ' style="cursor:pointerbackground-color:#FF6600"><<</td>'

//向后翻月

calendarTable += '<td colspan="2" onclick="javascript:drawCalendar('+nextYear+','+nextMonth+')"'+

    ' style="cursor:pointerbackground-color:#FF6600">>></td>'

 //向后翻年

 calendarTable += '<td colspan="1" onclick="javascript:drawCalendar('+(nextYear + 1)+','+nextMonth+')"'+

    ' style="cursor:pointerbackground-color:#FF6600">>>></td>'

calendarTable += ' </tr>'

//星期表头

calendarTable += '  <tr style="background-color:#6699FF">'

calendarTable += '      <td>日</td>'

calendarTable += '      <td>一</td>'

calendarTable += '      <td>二</td>'

calendarTable += '      <td>三</td>'

calendarTable += '      <td>四</td>'

calendarTable += '      <td>五</td>'

calendarTable += '      <td>六</td>'

calendarTable += '  </tr>'

//计算一个月内的天数,注意闰月

  var dayNum_in_month = [31,28,31,30,31,30,31,31,30,31,30,31]

  var isleapyear = date_year % 4

  if(isleapyear == 0)

  {

  dayNum_in_month[1] = 29

  }

  var month_alldays = dayNum_in_month[date_month - 1]

  //计算行数,line_top表示当前日期上面的行数,包括当前行;line_bot表示当前日期下面的行数,不包括当前行

  var line_top

  var line_bot

  if((date_today - date_day + 1) % 7 != 0)

  {

  line_top = Math.floor((date_today - date_day + 1) / 7) + 1

  }

  else

  {

  line_top = Math.floor((date_today - date_day + 1) / 7)

  }

  if((30 - date_today + date_day + 1) % 7 != 0)

  {

  line_bot = Math.floor((30 - date_today + date_day + 1) / 7) + 1

  }

  else

  {

  line_bot = Math.floor((30 - date_today + date_day + 1) / 7)

  }

  //定义一个二维数组,预备一个6*7的数组,数组中每个元素对应一个单元格(日期)

  var dateList = new Array([""],[""],[""],[""],[""],[""],[""])

  var dateCell

  for(var i = 1 i < 7 i++)

  {

  //i是行数

  calendarTable += '  <tr>'

  for(var j = 0 j < 7 j++)

  {

  //j是列数

  dateList[i][j] = date_today - 7 * (line_top - i + 1) + j - date_day

  //如果武器<=0,置空

  if((date_today - 7 * (line_top - i + 1) + j - date_day) <= 0)

  {

  dateList[i][j] = " "

  }

  //如果日期大于月总天数,则不显示

  if((date_today - 7 * (line_top - i + 1) + j - date_day) > month_alldays)

  {

  dateList[i][j] = " "

  }

  if(dateList[i][j] != " ")

  {

  //如果单元格不是空,那么可以设置其触发三个事件,共有三个事件

  //1、单击事件,将当前日期写入文本框

  //2、鼠标指针移到单元格上,改变背景

  //3、鼠标指针离开单元格,背景复原

  dateCell = 

  '<td onclick="javascript:setDateText('+date_year+','+date_month+',this.firstChild.nodeValue)"'+'onmouseover="javascript:setFocus(this)"'+'  onmouseout="javascript:setFocusOut(this)"'+ '  style="cursor:pointer">'+dateList[i][j]+'</td>'

  if(i == line_top && j == line_bot)

  {

  dateCell = 

  '<td onclick="javascript:setDateText('+date_year+','+date_month+',this.firstChild.nodeValue)"'+'onmouseover="javascript:setFocus(this)"'+'  onmouseout="javascript:setFocusOut(this)"'+ '  style="cursor:pointerbackground-color:#FF6600">'+dateList[i][j]+'</td>'

  }

  }

  else

  {

  dateCell = "<td> </td>"

  }

  calendarTable += dateCell

  }

  calendarTable += '</tr>'

  }

  calendarTable += '<tr><td colspan="7"'+'onclick="javascript:closeCalendar()"'+'style="background-color#339999cursor:pointercolor:redfont-weight:bold">'+'关闭('+date_year+"年"+date_month+"月"+')</td></tr>'

  calendarTable += '</table>'

  //将日期写入

  var oCalendarContainer = document.getElementById("calendarContainer")

  oCalendarContainer.innerHTML = calendarTable

  }

  //当鼠标指针指到当前日期单元格

  function setFocus(obj)

  {

  obj.style.backgroundColor = "#FF6600"

  }

  //当鼠标指针离开当前日期单元格

  function setFocusOut(obj)

  {

  obj.style.backgroundColor = ""

  }

  //鼠标单击当前单元格

  function setDateText(sYear,sMonth,sDate)

  {

  var oDateText = document.getElementById("dateText")

  oDateText.value = sYear + "-" + sMonth + "-" + sDate

  }