下面的代码中为什么只弹出1次"test",哪里出错了? <html>
<head>
<script language="javascript">
var h=0;function i(){
   document.open();
   document.close(); 

   f();
}
function f(){
   alert("test");
   h++;
   if(h<10) 
      setTimeout(f,1000);
}</script>
</head><body onLoad="i()">
</body></html>谢谢!

解决方案 »

  1.   

    红色字的部分是这样的:document.open(); document.close(); 
    没有与
      

  2.   

    document.close() 方法的作用是关闭输入流,并强制发送数据显示。
      

  3.   

    try
    <html>
    <head>
        <script language="javascript">
            var h = 0;        function i() {
                document.open();
                f();
                document.close();
            }
            function f() {
                alert("test");
                h++;
                alert(h);
                if (h < 10)
                    setTimeout(f, 1000);
                f();
            }    </script>
    </head>
    <body onload="i()">
    </body>
    </html>
      

  4.   

    错了,上面的事死循环<html>
    <head>
        <script language="javascript">
            var h = 0;        function i() {
                document.open();
                f();
                document.close();
            }
            function f() {
                alert("test");
                h++;
                alert(h);
                if (h < 10)
                                f();
            }    </script>
    </head>
    <body onload="i()">
    </body>
    </html>
      

  5.   


     document.open() 
    功能:打开一个新文档,并擦除当前文档的内容。语法:document.open(mimetype,replace)参数:•mimetype:可选。规定正在写的文档的类型。默认值是"text/html"。
    •replace:可选。当此参数设置后,可引起新文档从父文档继承历史条目。
    注1:open()方法将擦除当前HTML文档的内容,开始一个新的文档,新文档用write()方法或writeln()方法编写。注2:调用open()方法打开一个新文档并且用write()方法设置文档内容后,必须记住用close()方法关闭文档,并迫使其内容显示出来。注3:属于被覆盖的文档的一部分的脚本或事件句柄不能调用该方法,因为脚本或事件句柄自身也会被覆盖。
     
     document.close() 
    功能:close()方法可关闭一个由open()方法打开的输出流,并显示选定的数据。语法:document.close()参数:无。注:该方法将关闭open()方法打开的文档流,并强制地显示出所有缓存的输出内容。如果您使用write()方法动态地输出一个文档,必须记住当你这么做的时候要调用close()方法,以确保所有文档内容都能显示。一旦调用了close(),就不应该再次调用write(),因为这会隐式地调用open()来擦除当前文档并开始一个新的文档。
     也就是说,执行document.open();后,文档中什么都没有了,head中的js也都没有了,所以就不弹出test了。
      

  6.   

    去掉 document.open();open:打开一个窗口documetnt.open:document.open([mimetype]):使用指定的MIME类型打开一个缓冲区,将write和 writeln的内容写入缓冲区。打开一个新的空白文档对象(注意不是窗口),在IE下,open有两个默认参数,相当于 document.open("text/html",'""),第二个参数只有一个值 可选:replace,如果启用了该值,则新建的文档会覆盖当前页面的文档(相当于清空了原文档里的所有元素,不能后退即浏览器的后退按钮不可用);类似于location.relpace。
      

  7.   

    谢谢!
    document.open()方法打开的是一个空的文档吗?
    该文档里是否已经包含了<HTML> <HEAD> <BODY> ...等标签?
    document.write()方法写的数据是在<BODY>内吗?如果HTML标签(如:<style> <srcipt> <noscript> ...等)当作参数,这些参数会执行相应的代码吗?
      

  8.   

    document.open() 打开一个新的空白文档,在IE下,open有两个默认参数,相当于document.open("text/html",'""),第二个参数只有一个值可选:replace,如果启用了该值,则新建的文档会覆盖当前页面的文档(相当于清空了原文档里的所有元素,且不能后退即,浏览器的后退按钮不可用); 
    平常都不写document.open() 与 document.close(),因为浏览器会在write之前先open一个文档,再把write的内容输出到原文档里面。write结束后,默认是不会有close的,否则第二行document.write的时候就会覆盖之前的write。