테스트 사이트 - 개발 중인 베타 버전입니다

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

금봉쌤 4년 전 조회 2,111

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

 

</p>

<p><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>

 

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

 

</p>

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

    at <anonymous>:1:1</p>

<p>

 

</p>

<p><body onload='flowtime();'></p>

<p>

 

</p>

<p>    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>";</p>

<p>

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

금봉쌤
4년 전

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

 

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

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

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

 

</p>

<p><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

}

    <span style="background-color:#2ecc71;"> flowtime();</span>

//-->

</script></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

4년 전
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; ?> 로 변경해보세요. $~ 되어 있는 부분들을 다 바꾸셔야됩니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인