<script>
function init_stage()
{
var i,j,k,temp,lay;
for(k = 0; k < 7; k++ )
{
for(i=0; i < 2; i++ )
{
for(j=0; j < 10; j++ )
{
lay = "tt";
temp = ( k * 20 ) + ( i * 10 + j );
lay += temp;
document.write(lay,"</br>");
}
}
}
alert("in1");
//var k = setInterval("intt()",1000);
}
function intt()
{
alert("in2");
setTimeout("intt()",1000);
}
</script>
</head>
<body onLoad="init_stage();intt();">
답변자님,
정보를 공유해 주세요.
오류 났을 때 소스보기를 해 보시면 알 수 있을 거예요.
setTimeout("intt()",1000);
이 코드는 1초 후에 intt() 함수를 호출하겠다는 코드인데..
이미 init_stage() 함수에서 document.write() 함수를 사용함으로써 본문이 싹 업데이트 되었습니다.
즉 intt() 함수는 최초 1회 실행된 이후에는 더 이상 함수 자체가 존재하지 않게 되어 오류가 발생하는 것이죠.
출력을 꼭 document.wirte() 함수로 하지 않아도 된다고 한다면.. 아래와 같이 해 보세요.
아래처럼 출력을 위한 영역(div)을 따로 잡고 거기에 innerHTML 로 결과를 출력한다면... intt() 함수가 사라질 염려가 없으니 오류도 발생하지 않겠죠.
<html>
<head>
<script>
function init_stage()
{
var result = document.getElementById("result");
var i,j,k,temp,lay;
for(k = 0; k < 7; k++ )
{
for(i=0; i < 2; i++ )
{
for(j=0; j < 10; j++ )
{
lay = "tt";
temp = ( k * 20 ) + ( i * 10 + j );
lay += temp;
//document.write(lay,"</br>");
result.innerHTML += lay + "<br>";
}
}
}
alert("in1");
//var k = setInterval("intt()",1000);
}
function intt()
{
alert("in2");
setTimeout("intt()",1000);
}
</script>
</head>
<body onLoad="init_stage();intt();">
<div id="result"></div>
</body>
</html>
2008.06.08.
-
채택
질문자가 채택한 답변입니다.
-
출처
나..
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.