iteye_2436 2009-07-23 13:37
浏览 442
已采纳

关于setTimeout

[code="java"]

document.write("<h1>Hello World!</h1>") document.write("<h1>Hello World!11</h1>") setTimeout("write1()","0"); function write1() { document.write("<h1>Hello World!22</h1>"); }



[/code]
为什么write1里边的document.write("

Hello World!22

");
会覆盖之前的document.write呢,而且显示的Hello World!22是粗体的,这时为什么呢 :oops:
[b]问题补充:[/b]
[code="java"]

document.write("<div>111</div>"); document.write("<div>222</div>");



[/code]
这段代码的显示结果是:
111
222
[code="java"]

document.write("<div>111</div>"); document.write("<div>222</div>");



[/code]

[b]问题补充:[/b]
[code="java"]

document.write("<div>111</div>"); document.write("<div>222</div>"); setTimeout("write1()","0"); function write1() { document.write("<h1>333</h1>"); }



[/code]这段代码执行的结果是333,并且333的字体和111,222的字体不一样,
[b]问题补充:[/b]
按楼下几位所说,[quote]document.write("

111
");

document.write("
222
");[/quote]是不是应该只显示222? ,但实际上不是。
[b]问题补充:[/b]
lovewhzlq和lt0604 的回答现在明白了(更具体的解释在JavaScript权威指南中文版第五版的303页,15.1动态文档的内容), “在载人页面后,浏览器输出流自动关闭;在此之后,任何一个对当前页面进行操作的document.write()方法将打开—个新的输出流。”和“setTimeout的缘故,产生了异步行为,故覆盖了原来的 ”是一个意思呵呵,:D ,不过延时的document.write的字体为什么是粗的呢? :shock: :D
[b]问题补充:[/b]
[code="java"]document.write("
111
");

document.write("
222
");[/code]
div :roll:
[b]问题补充:[/b]
[code="java"]

document.write("<div>111</div>"); document.write("<div>222</div>"); setTimeout("write1()","0"); function write1() { [b]document.write("<div>333</div>");[/b] }



[/code]
用这段代码试下,333是粗体的~ :shock: :D
[b]问题补充:[/b]
:!: :!: :!: :!: :!: 分割线 :!: :!: :!: :!: :!:
说明一下:
关[b]于document.write()方法还有一点要说明的是它的相关方法document.close()。脚本向窗口(不管是本窗口或其他窗口)写完内容后.必须关闭输出流。在延时脚本的最后一个document.write()方法后面.必须确保含有document.close()方法,不这样做就不能显示图片和表单。[/b]这个解释有误。
刚看了JavaScript权威指南,document.write一般有两种用法,1.一种是在文档加载的时候,用于想文档写入内容,2.一种用于在另一个窗口中(比如弹出窗口)写入文档。用第二种方法的例子:【注:一下内容来自于JavaScript权威指南第五版】[code="java"]function test() {
var w = window.open();
var d = w.document;
d.open();
d.write("111");
d.close();
}[/code]
这里因为调用了documetn.open()方法,所以当在文档中的内容写完后,必须要调document.close();,用来说明文档装载完毕,否则,浏览器就不能制止他所显示的文档装在动画。
[b]问题补充:[/b]
我加那个[b]主要就是想让代码粗体显示,就这段代码[code="java"]

document.write("<div>111</div>"); document.write("<div>222</div>"); setTimeout("write1()","0"); function write1() { document.write("<div>333</div>"); }



[/code]为什么333是粗体的,
[b]问题补充:[/b]
不是很粗那种粗体,可以试一下[code="java"]

document.write("<div>111</div>");



[/code]和[code="java"]

setTimeout("write1()","0"); function write1() { document.write("<div>111</div>"); }



[/code]这两段代码的输出字体不一样
[b]问题补充:[/b]
“不要说我现实,一个问题一个问题收钱”我才30分 :shock: ,5分都是大出血了! :shock: :shock: :shock:
[b]问题补充:[/b]
我这显示的不一样,正常的document.write字体比延迟的细一些,ie8,ff下试的
[b]问题补充:[/b]
结贴了,,字体的问题没啥大不了了,不过就是不清楚为什么字体不一样而已了想弄明白。 :!: :!: :!:

  • 写回答

23条回答 默认 最新

  • li28544071 2009-07-23 14:12
    关注

    不敢同意上面两位的说话。

    个人认识是setTimeout的缘故,产生了异步行为,故覆盖了原来的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(22条)

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64