00—js document中的页面覆盖问题

今天在w3School 开始学习js的时候遇见一个问题:您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档。,w3School源码如下:

  <!DOCTYPE html>
<html>
<body>

<p>
JavaScript 能够直接写入 HTML 输出流中:
</p>

<script>
document.write("<h1>This is a heading</h1>");
document.write("<p>This is a paragraph.</p>");
</script>

<p>
您只能在 HTML 输出流中使用 <strong>document.write</strong>。
如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。
</p>

</body>
</html>

查阅资料后,将理解写在下面:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
<body>

 <p>
   JavaScript 能够直接写入 HTML 输出流中:
 </p>
 <script>
  document.write("<h1>This is a heading</h1>");
  document.write("<p>This is a paragraph.</p>");
 </script>

 <p>
  您只能在 HTML 输出流中使用 <strong>document.write</strong>。
  如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。
 </p>

 <button onclick="myFunction()">点击这里</button>

  <script>
  function myFunction()
  {
  document.write("调用了函数,文档被重写");
  }
  </script>

</body>
 </html>

在这个例子里面,程序执行到第二个document.write就不会向下执行, 点击button按钮之后,执行第三个document.write,此时页面会整个刷新,只打印出调用了函数,文档被重写,也就是说执行document.write会导致覆盖整个页面中的原有信息。具体的细节和原理可以查看https://blog.csdn.net/wxh24578/article/details/72820367
下面引用https://blog.csdn.net/qq_37425546/article/details/54868908的一段话,做个总结:

用javascript编写的代码只能通过html/xhtml文档才能执行,代码一行一行解析,文档在加载的过程中实际是一边加载一边用document.write写出内容到屏幕上,而加载完成后,document就关闭。如果再调用document.write往网页上写内容的话,就会重写document。

猜你喜欢

转载自blog.csdn.net/rujiaziyang/article/details/80047516