首页 web前端 js教程 在JS中有关document.write()的用法(详细教程)

在JS中有关document.write()的用法(详细教程)

Jun 22, 2018 pm 05:17 PM
清空

这篇文章主要介绍了JS 中document.write()的用法和清空的原因浅析,需要的朋友可以参考下

可能很多朋友都遇到过这样的情况,那就是使用document.write()函数向网页中写内容的时候,会把文档中的原来的内容给清空,这一点对于初学者来说算是一个困扰,下面就介绍一下为什么会出现这种情况,当然也就知道如何避免此种情况的发生了。

  先看一段代码实例:

<!DOCTYPE html>   
<html>   
  <head>   
  <meta charset=" utf-8">      
  <title>Document</title>   
  <script type="text/javascript"> 
    window.onload=function(){
      document.write("重温 JavaScript");
    }
  </script> 
</head> 
<body> 
  <p>Hello JavaScript</p> 
</body> 
</html>
登录后复制

  从以上代码的可以看出document.write()函数将原来的文档内容清空了,下面介绍一下出现此种情况的原因:

  window.onload事件是在文档内容完全加载完毕再去执行事件处理函数,当然文档流已经关闭了,这个时候执行doucment.writ()函数会自动调用document.open()函数创建一个新的文档流,并写入新的内容,再通过浏览器展现,这样就会覆盖原来的内容。不过很多朋友还有会这样的疑问,为什么类似下面的情况,原来网页中的内容不会被覆盖,代码如下:

<!DOCTYPE html>   
<html>   
  <head>   
  <meta charset=" utf-8">     
  <title>Document</title>   
  <script type="text/javascript"> 
    document.write("重温 JavaScript");
  </script> 
</head> 
<body> 
  <p>Hello JavaScript</p> 
</body> 
</html>
登录后复制

  在以上代码中,原来的文档内容并没有被清空,这是因为当前文档流是由浏览器所创建,并且document.wirte()函数身处其中,也就是执行此函数的时候文档流并没有被关闭,这个时候不会调用document.open()函数创建新文档流,所以也就不会被覆盖了。可能还有朋友会问为什么下面的方式还是不行,代码如下:

<!DOCTYPE html>   
<html>   
<head>   
  <meta charset=" utf-8">     
  <title>Document</title>   
  <script type="text/javascript">
    document.close(); 
    document.write("重温 JavaScript");
  </script> 
</head> 
<body> 
  <p>Hello JavaScript</p> 
</body> 
</html>
登录后复制

  上面使用document.close()关闭文档流了,为什么还是不能够覆盖原来的内容的,很遗憾,文档流是由浏览器创建,无权限手动关闭,document.close()函数只能够关闭由document.open()函数创建的文档流。看下面的代码实例:

<!DOCTYPE html>    
<html>    
<head>    
  <meta charset=" utf-8">      
  <title>Document</title>   
  <script type="text/javascript">  
  function create(){ 
    var newWindow=window.open("","Document","_blank"); 
    newWindow.document.write("Hello JavaScript"); 
    newWindow.document.close(); 
    newWindow.document.write("覆盖后的输出"); 
  } 
  window.onload=function(){ 
    var obt=document.getElementById("bt"); 
    obt.onclick=function(){ 
      create(); 
    } 
  } 
</script> 
</head>  
<body>  
  <p id="print">Hello JavaScript</p> 
  <input type="button" id="bt" value="查看效果"/> 
</body>  
</html>
登录后复制

  由doucment.open()创建的文档流就可以由document.close()关闭,那么第二个document.write()输出的内容会覆盖掉第一个输出的内容。

  异步引用外部JavaScript时,必须先运行document.open()清空文档,然后才能运行document.write(),参数写在body内容的开头。

  如果不先运行document.open(),直接运行document.write(),则无效且Chrome有如下提示:

这里写图片描述

// asyncWrite.js
document.open();
document.write(&#39;<p>test</p>&#39;);
document.close();
<!-- asyncWrite.html -->
<!-- 运行前 -->
<body>
  <script src="asyncWrite.js" async></script>
</body>
<!-- 运行后 -->
<body>
  <p>test</p>
</body>
登录后复制

  document.write()也能写入含有script标签的字符串,但是需要转义。写入的script标签中的内容会正常运行。

<!-- 运行前 -->
<script>
  document.write(&#39;<script>document.write("<p>test</p>");<\/script>&#39;);
</script>
<!-- 运行后 -->
<script>
  document.write(&#39;<script>document.write("<p>test</p>");<\/script>&#39;);
</script>
<script>document.write("<p>test</p>");</script>
<p>test</p>
登录后复制

document.write()可以传入多个参数。

<!-- 运行前 -->
<body>
  <script>
    document.write(&#39;<h2>multiArgument</h2>&#39;,&#39;<p>test</p>&#39;);
  </script>
</body>
<!-- 运行后 -->
<body>
  <script>
    document.write(&#39;<h2>multiArgument</h2>&#39;,&#39;<p>test</p>&#39;);
  </script>
  <h2>multiArgument</h2>
  <p>test</p>
</body>
登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在Angular作用域中scope的如何使用

在angularjs中如何实现柱状图动态加载

在Vue中有关响应式原理(详细教程)

以上是在JS中有关document.write()的用法(详细教程)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何恢复已清空的浏览历史记录 如何恢复已清空的浏览历史记录 Feb 18, 2024 pm 10:05 PM

网页历史记录清空了怎么恢复日期:2022年6月10日简介:在日常使用电脑或手机浏览器时,我们会经常使用浏览器的历史记录来查找之前访问过的网页。然而,有时我们可能会不小心清空浏览器的历史记录,导致我们无法找回特定的网页。在本文中,我将告诉你一些恢复被清空的网页历史记录的方法。方法一:使用浏览器恢复功能大多数常见的浏览器都提供了恢复历史记录的功能,例如Googl

微博怎么清空内容_微博清空内容教程 微博怎么清空内容_微博清空内容教程 Mar 30, 2024 pm 05:51 PM

1、首先打开微博APP,点击右下角我的。2、然后进入个人中心界面,点击左上角的微博。3、最后进入一个一个的删除微博信息即可。

如何处理KB4532693更新后导致桌面丢失? 如何处理KB4532693更新后导致桌面丢失? Dec 27, 2023 am 11:41 AM

我们在使用win10操作系统的电脑时,有时候如果出现了问题故障大家一定会选择更新系统的补丁。那么对于KB4532693更新安装后出现了桌面清空的情况,小编觉得可能是新的补丁还不够稳定,所以在使用的时候还是有概率会出现问题。我们可以先尝试卸载补丁即可。详细步骤就来看下小编是怎么做的吧~KB4532693更新后桌面清空怎么办1、微软于2月11日开始推送Windows10KB4532693安全补丁,2、系统版本号将更新至18363.657,不过近期有网友发现,3、安装此更新会导致新的系统问题,Wind

微博怎么清空草稿箱_微博清空草稿箱教程 微博怎么清空草稿箱_微博清空草稿箱教程 Mar 30, 2024 pm 08:31 PM

1、打开新浪微博app,进入右下角【我】。2、进入后在页面上方就可以看到草稿箱,然后点击将其打开。3、进入后长按想要删除的草稿作品会出现【删除草稿】和【清空草稿箱】这两个选项。4、点击【清空草稿箱】即可。

粉笔app怎么清空已经做过的题目 粉笔app清空做过的题目的方法 粉笔app怎么清空已经做过的题目 粉笔app清空做过的题目的方法 Mar 12, 2024 pm 01:43 PM

  粉笔app怎么清空已经做过的题目?粉笔app是一款可以直接让用户在这上面做题的软件,这个软件上面还有很多的视频课和讲义,用户可以选择在有wifi的时候将自己需要的视频和讲义下载下来,这样我们在等公交或者是在公交车上的时候就可以不耗费流量的看了。有些用户在这上面做过一些题目,然后想要清空掉做题记录,下面小编就整理了清空做题记录的方法供大家参考。粉笔app清空做过的题目的方法粉笔app和网页端没有提供清空已做题目的功能,如果想要重新做已完成的题目,需要注册一个新的账号来使用。在粉笔APP中,所有

不小心清空了回收站怎么恢复文件 不小心清空了回收站怎么恢复文件 Feb 21, 2024 pm 06:45 PM

不小心清空了回收站怎么恢复文件我们在电脑上使用文件时,经常会遇到一些意外情况,比如不小心清空了回收站,导致重要文件被删除。这时候,很多人可能会觉得慌张,不知道该如何才能恢复被删除的文件。但其实,在正确的方法和工具的帮助下,我们还是有机会将这些重要文件恢复出来。本文将为大家介绍一些方法和工具,帮助大家恢复不小心清空的回收站中的文件。首先,我们需要明白的一点是,

qq邮箱怎么清空已删除邮件记录 qq邮箱怎么清空已删除邮件记录 Mar 20, 2024 pm 09:26 PM

QQ邮箱作为我们日常收发电子邮件的重要工具,为我们提供了便捷的交流通讯方式。在日常使用中,我们通常会删除已读或垃圾邮件,但是简单的删除并不能彻底清除,那么为了节省空间并保持邮箱的整洁,清空已删除邮件是一个很好的习惯。那么想要彻底删除这些邮件的用户们就快来跟着本文一起操作了解吧!QQ邮箱怎么清空已删除邮件1、首先点击打开QQ邮箱,下滑页面找到已删除选项。2、然后点击进入页面,选择右上角的编辑按键。3、接着在底部弹出的选项里选择清空。4、最后确认点击清空即可1

找到在将一个二进制字符串清空(通过移除非空子字符串)后,0的数量最少的玩家 找到在将一个二进制字符串清空(通过移除非空子字符串)后,0的数量最少的玩家 Sep 16, 2023 am 10:21 AM

在本文中,我们将讨论一个有趣的问题,涉及到字符串操作和博弈论领域:“通过删除非空子字符串来清空二进制字符串,找到剩余0最少的玩家”。这个问题探索了使用二进制字符串进行竞技游戏的概念。我们的目标是在游戏结束后找出剩余0最少的玩家。我们将讨论这个问题,提供一个C++代码实现,并通过一个例子来解释这个概念。理解问题陈述给两个玩家一个二进制字符串,他们轮流玩游戏。在每一回合中,玩家移除至少包含一个“1”的非空子串。当字符串变空或字符串中没有“1”时,游戏结束。无法采取行动的玩家输掉游戏。任务是找到最终0

See all articles