document.write奇怪的行为

时间:2014-10-17 04:29:40

标签: javascript

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Title</title>
        <script language="JavaScript">
        <!--
        function showtags()
        {
            var tag, tags;
            //document.write(document.all.length);
            tags = "The tags in the page are:"
            for(i = 0; i < document.all.length; i++)
            {
                tag = document.all(i).tagName;
                tags = tags + "<br>" + tag;
            }
            document.write(tags);
        }
        //  -->
        </script>    
    </head>
    <body onload="showtags()">
        <h1>My <b>Web</b> Page</h1>
    </body>
</html>

输出:

页面中的标签是:
HTML
HEAD
META
TITLE
SCRIPT
BODY
H1

通过取消注释第一个document.write(),我得到以下输出:

8页面中的标签是:
HTML
HEAD
BODY

缺少某些标签,我不明白错误在哪里!我提前谢谢你。

2 个答案:

答案 0 :(得分:1)

这是因为在文档加载完成后调用document.write,它会删除并替换当前文档。如果您在此处看到:onload="showtags()"那就是为什么会发生这种情况。在DOM完成加载之前需要调用document.write。例如:

<p> <script> document.write("hi"); </script> </p>

没关系,因为DOM仍在加载。但是在onload中,或者在页面完成加载后,通常不会。

答案 1 :(得分:0)

文档加载完毕后,任何document.write()都会清除当前文档并启动一个新的空白文档,因此您之前在文档中的内容将被清除。

由于您在onload处理程序中调用此函数,因此文档已经完成加载,因此您的document.write()将开始一个新文档。