js延时函数setTimeout值执行一次。为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:51:26
代码是:
-------------------
<script language=javascript>
temp()
function temp()
{
document.writeln("<hr>");
setTimeout("temp()",2000);
}
</script>

-----------------------
我要的效果是一直执行下去,每2秒输出一条线,可这个代码只输出1行就不执行下去了?为什么啊,你们可以把代码另存为HTML执行看一下,找高手帮我解答呀!!!才几行的代码,大家帮忙想想辙,在线急等!
------------------请你们把你们改的代码自己执行一下,没有错误再贴出来,别自己还没执行就.......

先说下document.write的作用.document.write()的作用是把整个html文本的清空,再输出内容.所以,每隔两秒,html文本就被清空一次,再输出一个平行线.
基本同意楼上举人的代码.不过,还有另一种写法.如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<script language=javascript>
temp()
function temp()
{
var hr=document.createElement("hr");
document.getElementsByTagName("body")[0].appendChild(hr);
setTimeout("temp()",2000);
}
</script>
</body>
</html>

<script language=javascript>
function temp()
{
document.writeln("<hr>");
}
setTimeout("temp()",2000);
</script>

setTimeout本身是没有问题的,只是document.writeln看不出来效果.每两秒钟函数执行一次,但并没有实现累加,所以看不到效果.你用我下面的这个试试就