您好,您能否给我看一下我的这个程序。谢谢!
我有一个日历提醒的源程序,当点击每一天时,可以输入今天需要提醒的内容,
我想问的是如何当我改变系统日期和时间时,它会自动的给与提示当天需要提
示的内容。这个输出的函数怎么写呢?谢谢您的帮助。以下是我的源程序。
<script LANGUAGE="JavaScript">
<!--
var caution = falsefunction setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "")
if (!caution || (name + "=" + escape(value)).length <= 4000)
document.cookie = curCookie
else
if (confirm("Cookie exceeds 4KB and will be cut!"))
document.cookie = curCookie
}// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function getCookie(name) {
var prefix = name + "="
var cookieStartIndex = document.cookie.indexOf(prefix)
if (cookieStartIndex == -1)
return null
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}
function deleteCookie(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + "=" + 
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT"
}
}
function fixDate(date) {
var base = new Date(0)
var skew = base.getTime()
if (skew > 0)
date.setTime(date.getTime() - skew)
}function initCookie(monthName) {

var text = ""
for (var i = 1; i <= 31; ++i) {
text += "^" + i + "^"
} var now = new Date()
fixDate(now) // set time to one month (31 days) in the future
now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31) setCookie(monthName + "Calendar", text, now)
}function getSpecificReminder(num, monthName) {
var prefix = "^" + num + "^"
var totalCookie = getCookie(monthName + "Calendar")
var startIndex = totalCookie.indexOf(prefix, 0)
var startData = totalCookie.indexOf("^", startIndex + 1) + 1
if (num == 31)
var endData = totalCookie.length
else
var endData = totalCookie.indexOf("^", startData)

return totalCookie.substring(startData, endData)
}function setSpecificReminder(num, monthName, newValue) {
var prefix = "^" + num + "^"
var totalCookie = getCookie(monthName + "Calendar")
var startIndex = totalCookie.indexOf(prefix, 0)
var startData = totalCookie.indexOf("^", startIndex + 1) + 1
if (num == 31)
var endData = totalCookie.length
else
var endData = totalCookie.indexOf("^", startData)
var now = new Date()
fixDate(now) // set time to one month (31 days) in the future
now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31) setCookie(monthName + "Calendar", totalCookie.substring(0, startData) + newValue + totalCookie.substring(endData, totalCookie.length), now)
}function getInput(num, monthName) {
if (!getCookie(monthName + "Calendar")) 
initCookie(monthName)
var newValue = prompt("今天要提醒的事为:", getSpecificReminder(num, monthName))
if (newValue) // user did not cancel
setSpecificReminder(num, monthName, newValue)
}function getTime() {
// initialize time-related variables with current time settings
var now = new Date()
var hour = now.getHours()
var minute = now.getMinutes()
now = null
var ampm = ""  // validate hour values and set value of ampm
if (hour >= 12) {
hour -= 12
ampm = "PM"
} else
ampm = "AM"
hour = (hour == 0) ? 12 : hour // add zero digit to a one digit minute
if (minute < 10)
minute = "0" + minute // do not parse this number! // return time string
return hour + ":" + minute + " " + ampm
}function leapYear(year) {
if (year % 4 == 0) // basic rule
return true // is leap year
return false // is not leap year
}

解决方案 »

  1.   

    function getDays(month, year) {
    // create array to hold number of days in each month
    var ar = new Array(12)
    ar[0] = 31 // January
    ar[1] = (leapYear(year)) ? 29 : 28 // February
    ar[2] = 31 // March
    ar[3] = 30 // April
    ar[4] = 31 // May
    ar[5] = 30 // June
    ar[6] = 31 // July
    ar[7] = 31 // August
    ar[8] = 30 // September
    ar[9] = 31 // October
    ar[10] = 30 // November
    ar[11] = 31 // December // return number of days in the specified month (parameter)
    return ar[month]
    }function getMonthName(month) {
    // create array to hold name of each month
    var ar = new Array(12)
    ar[0] = "一月"
    ar[1] = "二月"
    ar[2] = "三月"
    ar[3] = "四月"
    ar[4] = "五月"
    ar[5] = "六月"
    ar[6] = "七月"
    ar[7] = "八月"
    ar[8] = "九月"
    ar[9] = "十月"
    ar[10] = "十一月"
    ar[11] = "十二月" // return name of specified month (parameter)
    return ar[month]
    }function setCal() {
    // standard time attributes
    var now = new Date()
    var year = now.getYear()
    var month = now.getMonth()
    var monthName = getMonthName(month)
    var date = now.getDate()
    now = null // create instance of first day of month, and extract the day on which it occurs
    var firstDayInstance = new Date(year, month, 1)
    var firstDay = firstDayInstance.getDay()
    firstDayInstance = null // number of days in current month
    var days = getDays(month, year) // call function to draw calendar
    drawCal(firstDay + 1, days, date, monthName, year)
    }function drawCal(firstDay, lastDate, date, monthName, year) {
    // constant table settings
    var headerHeight = 30 // height of the table's header cell
    var border = 1 // 3D height of table's border
    var cellspacing = 2 // width of table's border
    var headerColor = "midnightblue" // color of table's header
    var headerSize = "+3" // size of tables header font
    var colWidth = 50 // width of columns in table
    var dayCellHeight = 25 // height of cells containing days of the week
    var dayColor = "darkblue" // color of font representing week days
    var cellHeight = 20 // height of cells representing dates in the calendar
    var todayColor = "red" // color specifying today's date in the calendar
    var timeColor = "purple" // color of font representing current time // create basic table structure
    var text = "" // initialize accumulative variable to empty string
    text += '<CENTER>'
    text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>' // table settings
    text +=  '<TH COLSPAN=7 ALIGN="center" VALIGN="center" HEIGHT=' + headerHeight + '>' // create table header cell
    text +=  '<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>' // set font for table header
    text +=  monthName + ' ' + year 
    text +=  '</FONT>' // close table header's font settings
    text +=  '</TH>' // close header cell // variables to hold constant settings
    var openCol = '<TD ALIGN="center" VALIGN="center" WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
    openCol += '<FONT COLOR="' + dayColor + '">'
    var closeCol = '</FONT></TD>' // create array of abbreviated day names
    var weekDay = new Array(7)
    weekDay[0] = "星期日"
    weekDay[1] = "星期一"
    weekDay[2] = "星期二"
    weekDay[3] = "星期三"
    weekDay[4] = "星期四"
    weekDay[5] = "星期五"
    weekDay[6] = "星期六"

    // create first row of table to set column width and specify week day
    text += '<TR ALIGN="center" VALIGN="center">'
    for (var dayNum = 0; dayNum < 7; ++dayNum) {
    text += openCol + weekDay[dayNum] + closeCol 
    }
    text += '</TR>'

    // declaration and initialization of two variables to help with tables
    var digit = 1
    var curCell = 1

    for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
    text += '<TR ALIGN="center" VALIGN="top">'
    for (var col = 1; col <= 7; ++col) {
    if (digit > lastDate)
    break
    if (curCell < firstDay) {
    text += '<TD></TD>';
    curCell++
    } else {
    if (digit == date) { // current cell represent today's date
    text += '<TD HEIGHT=' + cellHeight + '>'
    text += '<FONT COLOR="' + todayColor + '">'
    text += '<A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Store or retrieve data for ' + monthName + ' ' + digit + '\'; return true"><FONT COLOR="' + todayColor + '">' + digit + '</FONT></A>'
    text += '<BR>'
    text += '<FONT COLOR="' + timeColor + '" SIZE=2>'
    text += '<CENTER>' + getTime() + '</CENTER>'
    text += '</FONT>'
    text += '</TD>'
    } else
    text += '<TD HEIGHT=' + cellHeight + '><A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Store or retrieve data for ' + monthName + ' ' + digit + '\'; return true">' + digit + '</A></TD>'
    digit++
    }
    }
    text += '</TR>'
    }

    // close all basic table tags
    text += '</TABLE>'
    text += '</CENTER>' // print accumulative HTML string
    document.write(text) 
    }setCal()// -->
    </script>