document.write()方法的执行方式




无标题文档


asdf

document.write("1");

这样一段代码执行的结果为asdf1



无标题文档


asdf

window.onload=function(){document.write("1");}

这样的执行结果就是1
write()方法到底什么时候会覆盖网页原有的内容?

两段代码的区别在于调用时机:

第一段代码是在页面加载过程中调用document.write()方法,由于此时页面还没有加载完成,因此document.write()方法会继续在页面中追加内容;结果就是asdf1

第二段代码因为注册到页面的onload方法,会在页面加载完成后执行,这个时候document.write()会开启新的数据流,此时写入的任何内容将覆盖原有页面。

题注可以参考:
js中document.write的那点事
[url]http://www.cnblogs.com/dh616854836/articles/2140349.html[/url]

我修改了一下题主提供的样例,希望能对题主有帮助。
[code="html"]



无标题文档


asdf document.write("1");

dddd

[/code]

[code="java"]
在载入页面后,浏览器输出流自动关闭。在此之后,任何一个对当前页面进行操作的document.write()方法将打开—个新的输出流,它将清除当前页面内容(包括源文档的任何变量或值)。因此,假如希望用脚本生成的HTML替换当前页面,就必须把HTML内容连接起来赋给一个变量,使用一个document.write()方法完成写操作。
[/code]

在你的第一种方式中并没有执行document.write("1"),因为你没有指定它什么时候触发所以结果肯定是不变的

第二种方法window.onload=function(){document.write("1");}将其绑定到了window.onload事件上,意思是当页面加载完毕(即onload)时执行这段代码,所以加载完毕后执行document.write("1"),重新绘制了页面,即用"1"代替了原来页面内容"asdf"

所以说,具体什么时候执行是你自己指定的

首先你要清楚HTML在页面上呈现的原理:
html标签中的元素在浏览器中呈现是边加载边呈现的。就像我们在白纸板上画画。
内容是边画边呈现的

第一个显示的结果:在页面加载过程中调用document.write()方法,由于还是变加载变呈现的 没有完全加载,因此document.write()在页面中追加内容;结果就是asdf1

第一个显示的结果:因为有onload方法,所以页面加载完成后执行,这个时候document.write()会开启新的数据流,此时写入内容将覆盖原有页面。