<html>
<head>
    <title>document对象</title>
    <script type="text/javascript" language="javascript">
        function test() {
            // var length = document.forms.length;
            var MyForm = document.forms;
            //document.write(MyForm.length);
            for (i = 0; i < MyForm.length; i++) {
                alert(MyForm[i].name);
                //document.write(MyForm[i].name);
            }
        }
    </script>
</head>
<body>
    <table>
        <form name="Myform">
            <input type="text" name="one">
        </form>
        <form name="Myform1">
            <input type="text" name="two">
        </form>
        <form name="Myform2">
            <input type="submit" name="one" onclick="test()">
        </form>
    </table>
</body>
</html>
这是我的代码。我有个疑问,就是我使用document.write(MyForm[i].name)时,页面只能输出一个也就是MyForm[0].name,并且浏览器编译提出警告(Form submission canceled because the form is not connected)。但是我使用alert时,每次确认都会输出一个值。我想知到,for循环下不应该一起输出来吗???希望大家给予帮助。谢谢啦。

解决方案 »

  1.   

    文档流关闭后不要document.write,会覆盖当前所有内容javascript document.write问题
      

  2.   

    在 window.onload 之前可以使用document.write,在之后再使用的话,页面内容会被重写
      

  3.   

    麻烦各位,在这张图中,第二次document.write(MyForm[2].name)时。它提示name没有定义,是因为以前的name被覆盖掉,导致他显示没有定义?????
      

  4.   


    不是说了,覆盖去了,dom不存在了
      

  5.   

    在文档加载完成后,只要运行一次document.write,那么所有内容重写,包括变量,dom,js,样式等等所有你想的到的内容
      

  6.   

    document.write()一般只在页面加载完成之前使用。
    当页面加载完成之后,文档流会自动关闭,就不要用document.write()了
    页面加载完成之后再使用document.write()就会重新创建一个新的页面。
    这个新页面的源代码就是document.write()输出的字符串。页面加载完成之后,要对页面内容改变和增加时应该用 innerHTML 和 appendChild()