자바스크립트 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>
답변을 작성하시기 전에 로그인 해주세요.