cannot read properties of undefined (reading 'document')
관련링크
본문
var target;
var pop_top;
var pop_left;
var cal_Day;
var oPopup =
window.createPopup();
function Calendar_Click(e) {
cal_Day = e.title;
if (cal_Day.length > 6) {
target.value = cal_Day
}
oPopup.hide();
}
function Calendar_D(obj) {
var now = obj.value.split("-");
target = obj;
pop_top = document.body.clientTop + GetObjectTop(obj) - document.body.scrollTop;
pop_left = document.body.clientLeft + GetObjectLeft(obj) - document.body.scrollLeft;
if (now.length == 3) {
Show_cal(now[0],now[1],now[2]);
} else {
now = new Date();
Show_cal(now.getFullYear(), now.getMonth()+1, now.getDate());
}
}
function Calendar_D_No_Hyphen(obj) {
var now = obj.value.split("-");
target = obj;
pop_top = document.body.clientTop + GetObjectTop(obj) - document.body.scrollTop;
pop_left = document.body.clientLeft + GetObjectLeft(obj) - document.body.scrollLeft;
if (now.length == 3) {
Show_cal_No_Hyphen(now[0],now[1],now[2]);
} else {
now = new Date();
Show_cal_No_Hyphen(now.getFullYear(), now.getMonth()+1, now.getDate());
}
}
function Calendar_W(obj) {
var now = obj.value.split("-");
target = obj;
pop_top = document.body.clientTop + GetObjectTop(obj) - document.body.scrollTop;
pop_left = document.body.clientLeft + GetObjectLeft(obj) - document.body.scrollLeft;
if (now.length == 2) {
Show_cal_W(now[0],now[1]);
} else {
now = new Date();
Show_cal_W(now.getFullYear(), now.getMonth()+1);
}
}
function Calendar_M(obj) {
var now = obj.value.split("-");
target = obj;
pop_top = document.body.clientTop + GetObjectTop(obj) - document.body.scrollTop;
pop_left = document.body.clientLeft + GetObjectLeft(obj) - document.body.scrollLeft;
if (now.length == 2) {
Show_cal_M(now[0],now[1]);
} else {
now = new Date();
Show_cal_M(now.getFullYear(), now.getMonth()+1);
}
}
function doOver(el) {
cal_Day = el.title;
if (cal_Day.length > 7) {
el.style.borderColor = "#FF0000";
}
}
function doOut(el) {
cal_Day = el.title;
if (cal_Day.length > 7) {
el.style.borderColor = "#FFFFFF";
}
}
function day2(d) { // 2자리 숫자료 변경
var str = new String();
if (parseInt(d) < 10) {
str = "0" + parseInt(d);
} else {
str = "" + parseInt(d);
}
return str;
}
function Show_cal(sYear, sMonth, sDay) {
var Months_day = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31)
var Month_Val = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
var intThisYear = new Number(), intThisMonth = new Number(), intThisDay = new Number();
datToday = new Date(); // 현재 날자 설정
intThisYear = parseInt(sYear,10);
intThisMonth = parseInt(sMonth,10);
intThisDay = parseInt(sDay,10);
if (intThisYear == 0) intThisYear = datToday.getFullYear(); // 값이 없을 경우
if (intThisMonth == 0) intThisMonth = parseInt(datToday.getMonth(),10)+1; // 월 값은 실제값 보다 -1 한 값이 돼돌려 진다.
if (intThisDay == 0) intThisDay = datToday.getDate();
switch(intThisMonth) {
case 1:
intPrevYear = intThisYear -1;
intPrevMonth = 12;
intNextYear = intThisYear;
intNextMonth = 2;
break;
case 12:
intPrevYear = intThisYear;
intPrevMonth = 11;
intNextYear = intThisYear + 1;
intNextMonth = 1;
break;
default:
intPrevYear = intThisYear;
intPrevMonth = parseInt(intThisMonth,10) - 1;
intNextYear = intThisYear;
intNextMonth = parseInt(intThisMonth,10) + 1;
break;
}
intPPyear = intThisYear-1
intNNyear = intThisYear+1
NowThisYear = datToday.getFullYear(); // 현재 년
NowThisMonth = datToday.getMonth()+1; // 현재 월
NowThisDay = datToday.getDate(); // 현재 일
datFirstDay = new Date(intThisYear, intThisMonth-1, 1); // 현재 달의 1일로 날자 객체 생성(월은 0부터 11까지의 정수(1월부터 12월))
intFirstWeekday = datFirstDay.getDay(); // 현재 달 1일의 요일을 구함 (0:일요일, 1:월요일)
//intSecondWeekday = intFirstWeekday;
intThirdWeekday = intFirstWeekday;
datThisDay = new Date(intThisYear, intThisMonth, intThisDay); // 넘어온 값의 날자 생성
//intThisWeekday = datThisDay.getDay(); // 넘어온 날자의 주 요일
intPrintDay = 1; // 달의 시작 일자
secondPrintDay = 1;
thirdPrintDay = 1;
Stop_Flag = 0
if ((intThisYear % 4)==0) { // 4년마다 1번이면 (사로나누어 떨어지면)
if ((intThisYear % 100) == 0) {
if ((intThisYear % 400) == 0) {
Months_day[2] = 29;
}
} else {
Months_day[2] = 29;
}
}
intLastDay = Months_day[intThisMonth]; // 마지막 일자 구함
Cal_HTML = "<html><body>";
Cal_HTML += "<form name='calendar'>";
Cal_HTML += "<table id=Cal_Table border=0 bgcolor='#f4f4f4' cellpadding=1 cellspacing=1 width=100% onmouseover='parent.doOver(window.event.srcElement)' onmouseout='parent.doOut(window.event.srcElement)' style='font-size : 12;font-family:굴림;'>";
Cal_HTML += "<tr height='35' align=center bgcolor='#f4f4f4'>";
Cal_HTML += "<td colspan=7 align=center>";
Cal_HTML += " <select name='selYear' STYLE='font-size:11;' OnChange='parent.fnChangeYearD(calendar.selYear.value, calendar.selMonth.value, "+intThisDay+")';>";
for (var optYear=(intThisYear-2); optYear<(intThisYear+2); optYear++) {
Cal_HTML += " <option value='"+optYear+"' ";
if (optYear == intThisYear) Cal_HTML += " selected>\n";
else Cal_HTML += ">\n";
Cal_HTML += optYear+"</option>\n";
}
Cal_HTML += " </select>";
Cal_HTML += " <a style='cursor:hand;' OnClick='parent.Show_cal("+intPrevYear+","+intPrevMonth+","+intThisDay+");'>◀</a> ";
Cal_HTML += "<select name='selMonth' STYLE='font-size:11;' OnChange='parent.fnChangeYearD(calendar.selYear.value, calendar.selMonth.value, "+intThisDay+")';>";
for (var i=1; i<13; i++) {
Cal_HTML += " <option value='"+Month_Val[i-1]+"' ";
if (intThisMonth == parseInt(Month_Val[i-1],10)) Cal_HTML += " selected>\n";
else Cal_HTML += ">\n";
Cal_HTML += Month_Val[i-1]+"</option>\n";
}
Cal_HTML += " </select> ";
Cal_HTML += "<a style='cursor:hand;' OnClick='parent.Show_cal("+intNextYear+","+intNextMonth+","+intThisDay+");'>▶</a>";
Cal_HTML += "</td></tr>";
Cal_HTML += "<tr align=center bgcolor='#87B3D6' style='color:#2065DA;' height='25'>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>일</font></td>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>월</font></td>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>화</font></td>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>수</font></td>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>목</font></td>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>금</font></td>";
Cal_HTML += " <td style='padding-top:3px;' width='24'><font color=black>토</font></td>";
Cal_HTML += "</tr>";
for (intLoopWeek=1; intLoopWeek < 7; intLoopWeek++) { // 주단위 루프 시작, 최대 6주
Cal_HTML += "<tr height='24' align=right bgcolor='white'>"
for (intLoopDay=1; intLoopDay <= 7; intLoopDay++) { // 요일단위 루프 시작, 일요일 부터
if (intThirdWeekday > 0) { // 첫주 시작일이 1보다 크면
Cal_HTML += "<td>";
intThirdWeekday--;
} else {
if (thirdPrintDay > intLastDay) { // 입력 날짝 월말보다 크다면
Cal_HTML += "<td>";
} else { // 입력날짜가 현재월에 해당 되면
Cal_HTML += "<td onClick=parent.Calendar_Click(this); title="+intThisYear+"-"+day2(intThisMonth).toString()+"-"+day2(thirdPrintDay).toString()+" style=\"cursor:Hand;border:1px solid white;";
if (intThisYear == NowThisYear && intThisMonth==NowThisMonth && thirdPrintDay==intThisDay) {
Cal_HTML += "background-color:#C6F2ED;";
}
switch(intLoopDay) {
case 1: // 일요일이면 빨간 색으로
Cal_HTML += "color:red;"
break;
//case 7:
// Cal_HTML += "color:blue;"
// break;
default:
Cal_HTML += "color:black;"
break;
}
Cal_HTML += "\">"+thirdPrintDay;
}
thirdPrintDay++;
if (thirdPrintDay > intLastDay) { // 만약 날짜 값이 월말 값보다 크면 루프문 탈출
Stop_Flag = 1;
}
}
Cal_HTML += "</td>";
}
Cal_HTML += "</tr>";
if (Stop_Flag==1) break;
}
Cal_HTML += "</table></form></body></html>
<script language='javascript' src='./calendar.js'></script>
<input type="text" name="startdate" value='<?=$startdate?>' maxlength="10" size="10" class=input style="text-align:center;">
<input type="button" name="cmdStartDate" value="달력" class=button tabindex=11 onclick="Calendar_D(document.all.startdate)">
안녕하세요.
ie에서는 클릭시 달력이 정상 적으로 표시되지만
edge나 chome에서는
245번째줄에서
var oPopBody = oPopup.document.body;
아래와 같은 에러가 표시됩니다.
혹시 document를 대체할수 있을까요?
typeerror : cannot read properties of undefined (reading 'document')
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.