자바스크립트 uncaught typeerror 질문입니다.

자바스크립트 uncaught typeerror 질문입니다.

QA

자바스크립트 uncaught typeerror 질문입니다.

본문

아래 자바 스크립트가 실행되면서

 


<script language="javascript">
<!--
function flowtime(){                // 제한 시간 경과후 강제 submit. 이하 펑션 같음.
    chantime = setTimeout("timebar()", 1000);
}
function timebar(){
    var ti = document.timer.timebox.value
    ti = ti - 1;
    
    if(ti<1){
        form1.submit();
    }else{
        sec = ti
        window.document.timer.sec.value = sec;
        window.document.timer.timebox.value = ti;        
        chantime = setTimeout("timebar()", 1000);
    }
}
function cleartime(){
    clearTimeout(chantime);
}
function exam(){ 
    url = "speed.php?speed_db_title=$speed_db_title&speed_limit_time=$speed_limit_time&speed_pro_count=$speed_pro_count&speed_pro_point=$speed_pro_point&speed_perfect_point=$speed_perfect_point&speed_limit_day=$speed_limit_day&coin=$coin&uid=$uid&uname=$uname&speed_pro_no=$speed_pro_no&speed_correct_c=$speed_correct_c&quiz_db=$quiz_db&try_ok=$try_ok&reply=$reply&total_try=$total_try&speed_exp=$speed_exp&speed_expl=$speed_expl"
    parent.exam.location.href = url
}
//-->
</script>

 

콘솔창에 아래와 같은 에러가 보이는데,

 


speed.php?speed_db=..................................................=1:63)
    at <anonymous>:1:1

 


<body onload='flowtime();'>

 


    echo "<form name=form1 method='post' onsubmit='return validate()' action=$PHP_SELF><table align='center'><tr><td align='center'><input type=text name=reply size=50 autocomplete='off' style='ime-mode:inactive;font-size:34px;font-family:Malgun Gothic;width:100%;height:55px;padding:10px;text-align:center;outline:none;margin:0;'></td></tr>
    <input type=hidden name=speed_db_title value=$speed_db_title>
    <input type=hidden name=speed_limit_time value=$speed_limit_time>
    <input type=hidden name=speed_pro_point value=$speed_pro_point>
    <input type=hidden name=speed_pro_count value=$speed_pro_count>
    <input type=hidden name=speed_perfect_point value=$speed_perfect_point>
    <input type=hidden name=speed_limit_day value=$speed_limit_day>
    <input type=hidden name=speed_pro_no value=$speed_pro_no>
    <input type=hidden name=coin value=$coin>
    <input type=hidden name=speed_pro_no value=$speed_pro_no>
    <input type=hidden name=speed_correct_c value=$speed_correct_c>
    <input type=hidden name=speed_correct value=$pro_split[1]>
    <input type=hidden name=total_try value=$total_try>
    <input type=hidden name=quiz_db value=$quiz_db>
    <input type=hidden name=try_ok value=ok>
    <input type=hidden name=speed_exp value=$speed_exp>
    <input type=hidden name=speed_expl value='$pro_split[2]'>
    <tr><td align='center' style='padding-top:10px;'><input type=button value='확인' onclick='form1.submit();' class='btn_01'></td></tr></table></form>    
    <center><form name=timer><table border='0'><tr><td><input type=hidden name=timebox size=20 value=$speed_limit_time><input type=text name=sec size=2 style='text-align:center;border:none;outline:none;color:#fb7272;font-size:30px;font-weight:bold;'></td></form></tr></table>";

 

이 에러를 없앨 방법이 있으면 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

url = "speed.php?speed_db_title=$speed_db_title&speed_limit_time=$speed_limit_time&speed_pro_count=$speed_pro_count&speed_pro_point=$speed_pro_point&speed_perfect_point=$speed_perfect_point&speed_limit_day=$speed_limit_day&coin=$coin&uid=$uid&uname=$uname&speed_pro_no=$speed_pro_no&speed_correct_c=$speed_correct_c&quiz_db=$quiz_db&try_ok=$try_ok&reply=$reply&total_try=$total_try&speed_exp=$speed_exp&speed_expl=$speed_expl"
    parent.exam.location.href = url 부분에 

 

$speed_limit_time 는 php 변수를 쓰신거 같은데 쓰실려면 <?php echo $speed_limit_time; ?> 로 변경해보세요. $~ 되어 있는 부분들을 다 바꾸셔야됩니다.

구글링하며 이리 저리 만지작거리다 자체적으로 문제점을 발견하여 해결했습니다.

 

에러 발생 원인은 javascript가 name이 timebox인 input보다 위에 있어 먼저 실행된 것이 문제였습니다.

따라서, 해결책은 javascript를 해당 input보다 아래에 위치시키고,

<body onload='flowtime();'>의 onload='flowtime();'을 javascript 속으로 옮겨서 해결했습니다.

 


<script language="javascript">
<!--
function flowtime(){                // 제한 시간 경과후 강제 submit. 이하 펑션 같음.
    chantime = setTimeout("timebar()", 1000);
}
function timebar(){
    var ti = document.timer.timebox.value;
    ti = ti - 1;
    
    if(ti<1){
        form1.submit();
    }else{
        sec = ti
        window.document.timer.sec.value = sec;
        window.document.timer.timebox.value = ti;        
        chantime = setTimeout("timebar()", 1000);
    }
}
function cleartime(){
    clearTimeout(chantime);
}
function exam(){ 
    url = "speed.php?speed_db_title=$speed_db_title&speed_limit_time=$speed_limit_time&speed_pro_count=$speed_pro_count&speed_pro_point=$speed_pro_point&speed_perfect_point=$speed_perfect_point&speed_limit_day=$speed_limit_day&coin=$coin&uid=$uid&uname=$uname&speed_pro_no=$speed_pro_no&speed_correct_c=$speed_correct_c&quiz_db=$quiz_db&try_ok=$try_ok&reply=$reply&total_try=$total_try&speed_exp=$speed_exp&speed_expl=$speed_expl"
    parent.exam.location.href = url
}
     flowtime();
//-->
</script>
답변을 작성하시기 전에 로그인 해주세요.
전체 8
QA 내용 검색

회원로그인

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