cannot read properties of undefined (reading 'document')

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
cannot read properties of undefined (reading 'document')

QA

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')

이 질문에 댓글 쓰기 :

답변 1

답변을 작성하시기 전에 로그인 해주세요.
전체 40
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT