这样一段代码执行的结果为asdf1
这样的执行结果就是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"]
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()会开启新的数据流,此时写入内容将覆盖原有页面。