ENGLISH 意见建议 网站地图 网站帮助
广泛智力汇聚   高效成果传播   先进机制培育
联盟首页  |  协同开发  |  开放源码库  |  安全告警  |  开源导航  |  文档中心  |  服务支持  |  共创论坛  |  关于联盟


注册会员 网站帮助
    您的位置 »
    今天是: 2010年11月22日    
项目搜索

完全匹配   
开源软件
软件分类表
新发布软件
其它网站镜像
代码片断
协同开发
文档
论坛
寻求协助
热点项目
站点状态
编译工厂

联系我们
关于联盟

代码片段库:
查看代码片段

浏览 | 提交新的代码片段 | 创建代码包

有提醒功能的日历

类型:
Full Script
类别:
HTML Manipulation
许可证:
GNU General Public License
语言:
JavaScript
 
描述:
一个带存储功能的日历,只要输入提醒的内容,下次你就可看到

该代码片段的版本系列:

片段ID 下载版本 提交时间 提交人 删除
47031.02003-10-14 15:35cbd001

点击"下载版本"来下载该代码片段.


最新版本的代码片段: 1.0


脚本说明:
把如下代码加入<body>区域中:
<script LANGUAGE="JavaScript">
<!--
var caution = false

function 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
}

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>

		

提交新版本

如果您修改了一个代码片段并且觉得很应该让别人共享,您可以把这作为这个代码片段的最新版本提交上来.


联盟团体会员
合作伙伴
© 共创软件联盟 版权所有
联盟服务条款 | 联盟隐私权规则 | 联系我们
电话: (8610)68313388-5949 | 传真: (8610)88377936
京ICP备05056057号