1119: 访问可能未定义的属性 MOUSE_DOWN (通过 static 类型 Class) 求解答

html-css023

1119: 访问可能未定义的属性 MOUSE_DOWN (通过 static 类型 Class) 求解答,第1张

我试了一下,将你的代码启动了一下,开始对ball这个对象报错,这里是正常的,我将ball改成了Sprite的类型,将他的vx和想vy属性都删了,因为Sprite没有这个。这样一来就没有错了,并没有出现向你说的那两个地方的错误,可否把你的代码粘的全些,或者把ball的定义也给我

<input name="Dates" type="text" id="Dates" size="25" maxlength="30" runat="server" readonly class="tab07" onclick="show_calendar('form1.Dates',null,null,'YYYY-MM-DD')" >

<input type="button" name="rqsel" value="--选择日期--" onclick="show_calendar('form1.Dates',null,null,'YYYY-MM-DD')" class="tab07" >

<script language = "javascript" src="date-picker.js"></script>

date-picker.js 代码

var weekend = [0,6]

var weekendColor = "#CEDBE6"

var fontface = "Verdana"

var fontsize = 2

var gNow = new Date()

var ggWinCal

isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false

isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false

Calendar.Months = ["January", "February", "March", "April", "May", "June",

"July", "August", "September", "October", "November", "December"]

// Non-Leap year Month days..

Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

// Leap year Month days..

Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {

if ((p_month == null) &&(p_year == null)) return

if (p_WinCal == null)

this.gWinCal = ggWinCal

else

this.gWinCal = p_WinCal

if (p_month == null) {

this.gMonthName = null

this.gMonth = null

this.gYearly = true

} else {

this.gMonthName = Calendar.get_month(p_month)

this.gMonth = new Number(p_month)

this.gYearly = false

}

this.gYear = p_year

this.gFormat = p_format

this.gBGColor = "white"

this.gFGColor = "black"

this.gTextColor = "black"

this.gHeaderColor = "white"

this.gHeaderBGColor = "#6178AD"

this.gReturnItem = p_item

}

Calendar.get_month = Calendar_get_month

Calendar.get_daysofmonth = Calendar_get_daysofmonth

Calendar.calc_month_year = Calendar_calc_month_year

Calendar.print = Calendar_print

function Calendar_get_month(monthNo) {

return Calendar.Months[monthNo]

}

function Calendar_get_daysofmonth(monthNo, p_year) {

/*

Check for leap year ..

1.Years evenly divisible by four are normally leap years, except for...

2.Years also evenly divisible by 100 are not leap years, except for...

3.Years also evenly divisible by 400 are leap years.

*/

if ((p_year % 4) == 0) {

if ((p_year % 100) == 0 &&(p_year % 400) != 0)

return Calendar.DOMonth[monthNo]

return Calendar.lDOMonth[monthNo]

} else

return Calendar.DOMonth[monthNo]

}

function Calendar_calc_month_year(p_Month, p_Year, incr) {

/*

Will return an 1-D array with 1st element being the calculated month

and second being the calculated year

after applying the month increment/decrement as specified by 'incr' parameter.

'incr' will normally have 1/-1 to navigate thru the months.

*/

var ret_arr = new Array()

if (incr == -1) {

// B A C K W A R D

if (p_Month == 0) {

ret_arr[0] = 11

ret_arr[1] = parseInt(p_Year) - 1

}

else {

ret_arr[0] = parseInt(p_Month) - 1

ret_arr[1] = parseInt(p_Year)

}

} else if (incr == 1) {

// F O R W A R D

if (p_Month == 11) {

ret_arr[0] = 0

ret_arr[1] = parseInt(p_Year) + 1

}

else {

ret_arr[0] = parseInt(p_Month) + 1

ret_arr[1] = parseInt(p_Year)

}

}

return ret_arr

}

function Calendar_print() {

ggWinCal.print()

}

function Calendar_calc_month_year(p_Month, p_Year, incr) {

/*

Will return an 1-D array with 1st element being the calculated month

and second being the calculated year

after applying the month increment/decrement as specified by 'incr' parameter.

'incr' will normally have 1/-1 to navigate thru the months.

*/

var ret_arr = new Array()

if (incr == -1) {

// B A C K W A R D

if (p_Month == 0) {

ret_arr[0] = 11

ret_arr[1] = parseInt(p_Year) - 1

}

else {

ret_arr[0] = parseInt(p_Month) - 1

ret_arr[1] = parseInt(p_Year)

}

} else if (incr == 1) {

// F O R W A R D

if (p_Month == 11) {

ret_arr[0] = 0

ret_arr[1] = parseInt(p_Year) + 1

}

else {

ret_arr[0] = parseInt(p_Month) + 1

ret_arr[1] = parseInt(p_Year)

}

}

return ret_arr

}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.

new Calendar()

Calendar.prototype.getMonthlyCalendarCode = function() {

var vCode = ""

var vHeader_Code = ""

var vData_Code = ""

// Begin Table Drawing code here..

vCode = vCode + "<TABLE BORDER=1 bordercolordark=#ffffff bordercolorlight=#7A9CB7 CELLSPACING=0 CELLPADDING=0 BGCOLOR=\"" + this.gBGColor + "\">"

vHeader_Code = this.cal_header()

vData_Code = this.cal_data()

vCode = vCode + vHeader_Code + vData_Code

vCode = vCode + "</TABLE>"

return vCode

}

Calendar.prototype.show = function() {

var vCode = ""

this.gWinCal.document.open()

// Setup the page...

this.wwrite("<html>")

this.wwrite("<head><title></title>")

this.wwrite("</head>")

this.wwrite("<body bgcolor=#F5F7F8 " +

"link=\"" + this.gLinkColor + "\" " +

"vlink=\"" + this.gLinkColor + "\" " +

"alink=\"" + this.gLinkColor + "\" " +

"text=\"" + this.gTextColor + "\">")

// this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>")

// this.wwriteA(this.gMonthName + " " + this.gYear)

// this.wwriteA("</B><BR>")

// Show navigation buttons

var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1)

var prevMM = prevMMYYYY[0]

var prevYYYY = prevMMYYYY[1]

var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1)

var nextMM = nextMMYYYY[0]

var nextYYYY = nextMMYYYY[1]

this.wwrite("<TABLE WIDTH='100%' BORDER=1 bordercolordark=#ffffff bordercolorlight=#7A9CB7 CELLSPACING=0 CELLPADDING=1 BGCOLOR=\"" + this.gBGColor + "\">")

this.wwrite("<TR><TD COLSPAN='2' width='60%' ALIGN='center'>")

this.wwrite("<select size=1 name=Year onchange=javascript:window.opener.Build('"+p_item+"','"+this.gMonth+"',options[selectedIndex].value,'"+ p_format+"')>")

for(x=1940 x <2011x++)

{

if (x == parseInt(this.gYear))

{

sCheck="selected"

}

else

{

sCheck=""

}

this.wwrite("<option value="+x+" "+sCheck+">"+x+"年</option>")

// this.wwrite("<option value="+x+" "+sCheck+">西元"+x+"年</option>")

}

this.wwrite("</select></td><TD COLSPAN='2' width='40%' ALIGN='center'>")

this.wwrite("<select size=1 name=Month onchange=javascript:window.opener.Build('"+p_item+"',options[selectedIndex].value,'"+ this.gYear+"','"+ p_format+"')>")

var sCheck =""

for(j=0 j <12j++)

{

if (j == parseInt(this.gMonth))

{

sCheck="selected"

}

else

{

sCheck=""

}

this.wwrite("<option value="+j+" "+sCheck+">"+(j+1)+"月</option>")

}

this.wwrite("</select>")

this.wwrite("</TD></TR>")

this.wwrite("<TR><TD ALIGN=center WIDTH='30%'>")

if((parseInt(this.gYear)-1)>1939)

{

this.wwrite("[<A HREF=\"" +

"javascript:window.opener.Build(" +

"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +

")" +

"\"><<<\/A>]</TD><TD ALIGN=center WIDTH='30%'>")

}

else

{

this.wwrite(" </TD><TD ALIGN=center WIDTH='30%'>")

}

if((parseInt(this.gYear)+1)<2011)

{

this.wwrite("[<A HREF=\"" +

"javascript:window.opener.Build(" +

"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +

")" +

"\">>><\/A>]</TD><TD ALIGN=center WIDTH='20%'>")

}

else

{

this.wwrite(" </TD><TD ALIGN=center WIDTH='20%'>")

}

this.wwrite("[<A HREF=\"" +

"javascript:window.opener.Build(" +

"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +

")" +

"\"><<\/A>]</TD><TD ALIGN=center WIDTH='20%'>")

this.wwrite("[<A HREF=\"" +

"javascript:window.opener.Build(" +

"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +

")" +

"\">><\/A>]</TD></TR>")

this.wwrite("</TABLE>")

// Get the complete calendar code for the month..

vCode = this.getMonthlyCalendarCode()

this.wwrite(vCode)

this.wwrite("</font></body></html>")

this.gWinCal.document.close()

}

Calendar.prototype.showY = function() {

var vCode = ""

var i

var vr, vc, vx, vy // Row, Column, X-coord, Y-coord

var vxf = 285 // X-Factor

var vyf = 200 // Y-Factor

var vxm = 10 // X-margin

var vym // Y-margin

if (isIE) vym = 75

else if (isNav) vym = 25

this.gWinCal.document.open()

this.wwrite("<html>")

this.wwrite("<head><title></title>")

this.wwrite("<style type='text/css'>\n<!--")

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

vc = i % 3

if (i>=0 &&i<= 2) vr = 0

if (i>=3 &&i<= 5) vr = 1

if (i>=6 &&i<= 8) vr = 2

if (i>=9 &&i<= 11) vr = 3

vx = parseInt(vxf * vc) + vxm

vy = parseInt(vyf * vr) + vym

this.wwrite(".lclass" + i + " {position:absolutetop:" + vy + "left:" + vx + "}")

}

this.wwrite("-->\n</style>")

this.wwrite("</head>")

this.wwrite("<body " +

"link=\"" + this.gLinkColor + "\" " +

"vlink=\"" + this.gLinkColor + "\" " +

"alink=\"" + this.gLinkColor + "\" " +

"text=\"" + this.gTextColor + "\">")

this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>")

this.wwrite("Year : " + this.gYear)

this.wwrite("</B><BR>")

// Show navigation buttons

var prevYYYY = parseInt(this.gYear) - 1

var nextYYYY = parseInt(this.gYear) + 1

this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>")

this.wwrite("[<A HREF=\"" +

"javascript:window.opener.Build(" +

"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +

")" +

"\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>")

this.wwrite("[<A HREF=\"javascript:window.print()\">Print</A>]</TD><TD ALIGN=center>")

this.wwrite("[<A HREF=\"" +

"javascript:window.opener.Build(" +

"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +

")" +

"\">>><\/A>]</TD></TR></TABLE><BR>")

// Get the complete calendar code for each month..

var j

for (i=11i>=0i--) {

if (isIE)

this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">")

else if (isNav)

this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">")

this.gMonth = i

this.gMonthName = Calendar.get_month(this.gMonth)

vCode = this.getMonthlyCalendarCode()

this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>")

this.wwrite(vCode)

if (isIE)

this.wwrite("</DIV>")

else if (isNav)

this.wwrite("</LAYER>")

}

this.wwrite("</font><BR></body></html>")

this.gWinCal.document.close()

}

Calendar.prototype.wwrite = function(wtext) {

this.gWinCal.document.writeln(wtext)

}

Calendar.prototype.wwriteA = function(wtext) {

this.gWinCal.document.write(wtext)

}

Calendar.prototype.cal_header = function() {

var vCode = ""

vCode = vCode + "<TR>"

vCode = vCode + "<TD WIDTH='15%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>"

vCode = vCode + "<TD WIDTH='14%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>"

vCode = vCode + "<TD WIDTH='14%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>"

vCode = vCode + "<TD WIDTH='14%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>"

vCode = vCode + "<TD WIDTH='14%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>"

vCode = vCode + "<TD WIDTH='14%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>"

vCode = vCode + "<TD WIDTH='15%' ALIGN='CENTER' BGCOLOR='"+this.gHeaderBGColor+"'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>"

vCode = vCode + "</TR>"

return vCode

}

Calendar.prototype.cal_data = function() {

var vDate = new Date()

vDate.setDate(1)

vDate.setMonth(this.gMonth)

vDate.setFullYear(this.gYear)

var vFirstDay=vDate.getDay()

var vDay=1

var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear)

var vOnLastDay=0

var vCode = ""

/*

Get day for the 1st of the requested month/year..

Place as many blank cells before the 1st day of the month as necessary.

*/

vCode = vCode + "<TR>"

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

vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>"

}

// Write rest of the 1st week

for (j=vFirstDayj<7j++) {

vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +

"<A HREF='#' " +

"onClick=\"self.opener.document." + this.gReturnItem + ".value='" +

this.format_data(vDay) +

"'window.close()\">" +

this.format_day(vDay) +

"</A>" +

"</FONT></TD>"

vDay=vDay + 1

}

vCode = vCode + "</TR>"

// Write the rest of the weeks

for (k=2k<7k++) {

vCode = vCode + "<TR>"

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

vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +

"<A HREF='#' " +

"onClick=\"self.opener.document." + this.gReturnItem + ".value='" +

this.format_data(vDay) +

"'window.close()\">" +

this.format_day(vDay) +

"</A>" +

"</FONT></TD>"

vDay=vDay + 1

if (vDay >vLastDay) {

vOnLastDay = 1

break

}

}

if (j == 6)

vCode = vCode + "</TR>"

if (vOnLastDay == 1)

break

}

// Fill up the rest of last week with proper blanks, so that we get proper square blocks

for (m=1m<(7-j)m++) {

if (this.gYearly)

vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +

"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'></FONT></TD>"

else

vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +

"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>"

}

return vCode

}

Calendar.prototype.format_day = function(vday) {

var vNowDay = gNow.getDate()

var vNowMonth = gNow.getMonth()

var vNowYear = gNow.getFullYear()

if (vday == vNowDay &&this.gMonth == vNowMonth &&this.gYear == vNowYear)

return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>")

else

return (vday)

}

Calendar.prototype.write_weekend_string = function(vday) {

var i

// Return special formatting for the weekend day.

for (i=0i<weekend.lengthi++) {

if (vday == weekend[i])

return (" BGCOLOR=\"" + weekendColor + "\"")

}

return ""

}

Calendar.prototype.format_data = function(p_day) {

var vData

var vMonth = 1 + this.gMonth

vMonth = (vMonth.toString().length <2) ? "0" + vMonth : vMonth

var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase()

var vFMon = Calendar.get_month(this.gMonth).toUpperCase()

var vY4 = new String(this.gYear)

var vY2 = new String(this.gYear.substr(2,2))

var vDD = (p_day.toString().length <2) ? "0" + p_day : p_day

switch (this.gFormat) {

case "MM\/DD\/YYYY" :

vData = vMonth + "\/" + vDD + "\/" + vY4

break

case "MM\/DD\/YY" :

vData = vMonth + "\/" + vDD + "\/" + vY2

break

case "MM-DD-YYYY" :

vData = vMonth + "-" + vDD + "-" + vY4

break

case "MM-DD-YY" :

vData = vMonth + "-" + vDD + "-" + vY2

break

case "DD\/MON\/YYYY" :

vData = vDD + "\/" + vMon + "\/" + vY4

break

case "DD\/MON\/YY" :

vData = vDD + "\/" + vMon + "\/" + vY2

break

case "DD-MON-YYYY" :

vData = vDD + "-" + vMon + "-" + vY4

break

case "DD-MON-YY" :

vData = vDD + "-" + vMon + "-" + vY2

break

case "DD\/MONTH\/YYYY" :

vData = vDD + "\/" + vFMon + "\/" + vY4

break

case "DD\/MONTH\/YY" :

vData = vDD + "\/" + vFMon + "\/" + vY2

break

case "DD-MONTH-YYYY" :

vData = vDD + "-" + vFMon + "-" + vY4

break

case "DD-MONTH-YY" :

vData = vDD + "-" + vFMon + "-" + vY2

break

case "YYYY-MM-DD" :

vData = vY4 + "-" + vMonth + "-" + vDD

break

case "DD\/MM\/YYYY" :

vData = vDD + "\/" + vMonth + "\/" + vY4

break

case "DD\/MM\/YY" :

vData = vDD + "\/" + vMonth + "\/" + vY2

break

case "DD-MM-YYYY" :

vData = vDD + "-" + vMonth + "-" + vY4

break

case "DD-MM-YY" :

vData = vDD + "-" + vMonth + "-" + vY2

break

case "YYYY\/MM\/DD" :

vData = vY4 + "/" + vMonth + "/" + vDD

break

case "MM\/YYYY" :

vData = vMonth + "\/" + vY4

break

default :

vData = vMonth + "\/" + vDD + "\/" + vY4

}

return vData

}

function Build(p_item, p_month, p_year, p_format) {

var p_WinCal = ggWinCal

gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format)

// Customize your Calendar here..

gCal.gBGColor="white"

gCal.gLinkColor="black"

gCal.gTextColor="black"

gCal.gHeaderColor="white"

gCal.gHeaderBGColor = "#6178AD"

// Choose appropriate show function

if (gCal.gYearly) gCal.showY()

else gCal.show()

}

function show_calendar() {

/*

p_month : 0-11 for Jan-Dec12 for All Months.

p_year : 4-digit year

p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)

p_item : Return Item.

*/

p_item = arguments[0]

if (arguments[1] == null)

p_month = new String(gNow.getMonth())

else

p_month = arguments[1]

if (arguments[2] == "" || arguments[2] == null)

p_year = new String(gNow.getFullYear().toString())

else

p_year = arguments[2]

if (arguments[3] == null)

p_format = "YYYY/MM/DD"

else

p_format = arguments[3]

vWinCal = window.open("", "Calendar",

"width=250,height=210,status=no,resizable=no,top=200,left=200")

vWinCal.opener = self

vWinCal.focus()

ggWinCal = vWinCal

Build(p_item, p_month, p_year, p_format)

}

/*

Yearly Calendar Code Starts here

*/

function show_yearly_calendar(p_item, p_year, p_format) {

// Load the defaults..

if (p_year == null || p_year == "")

p_year = new String(gNow.getFullYear().toString())

if (p_format == null || p_format == "")

p_format = "YYYY/MM/DD"

var vWinCal = window.open("", "Calendar", "scrollbars=yes")

vWinCal.opener = self

ggWinCal = vWinCal

Build(p_item, null, p_year, p_format)

}