document.write为什么不输出啊

imarshal 2017-03-31 08:46:09
就是在ajax的onreadystatechange,下面代码中的b不输出啊,但把write('a')这句去掉就能输出,这是为什么啊


document.write(‘a’)
var b = eval(this.responseText)
document.write(b)
...全文
808 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-04-01
  • 打赏
  • 举报
回复
执行document.write("A");会清空页面原有的内容,重建一个页面。 可能是eval中的代码有访问到已经清除了的元素,导致程序出错。

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title> 页面名称 </title>
</head>
<body>
<div id="ss">
	这里2秒后会被清除
</div>
<script type="text/javascript">
setTimeout(function () {
	document.write("A");//执行document.write("A");会清空页面原有的内容,重建一个页面。
	document.getElementById("ss").innerHTML = "aaaaaaa";//新页面上已经没有<div id="ss">了
	document.write("B");//一下行出错,这行不会执行
}, 2000);
</script>
</body>
</html>
总之。在页面加载完成之后,就不要用document.write()了,否则会出现想像不到的情况。
imarshal 2017-04-01
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
在你代码ajax的onreadystatechange事件触发时,当前页面就已经加载完成了,文档流也已经自动关闭, 当执行document.write('a');时就不是在当前页面中写入a了,而是创建一个新的页面,在新的页面中写入a。 这样后边的代码 var b = eval(this.responseText) document.write(b) 就已经没有了,自然不执行了。
但把eval这句去掉然后document.write('b'),可以输出啊,感觉是eval的问题
天际的海浪 2017-04-01
  • 打赏
  • 举报
回复
在你代码ajax的onreadystatechange事件触发时,当前页面就已经加载完成了,文档流也已经自动关闭, 当执行document.write('a');时就不是在当前页面中写入a了,而是创建一个新的页面,在新的页面中写入a。 这样后边的代码 var b = eval(this.responseText) document.write(b) 就已经没有了,自然不执行了。
imarshal 2017-03-31
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
document.write()一般只在页面加载完成之前使用。 当页面加载完成之后,文档流会自动关闭,就不要用document.write()了 页面加载完成之后再使用document.write()就会重新创建一个新的页面。 都已经是新的页面,上个页面中的代码就没有了,当然不执行了。 这个新页面的源代码就是document.write()输出的字符串。 页面加载完成之后,要对页面内容改变和增加时应该用 innerHTML 和 appendChild()
这个具体怎么看啊,比如我这个例子,两个write之间加上eval怎么就关闭了啊
天际的海浪 2017-03-31
  • 打赏
  • 举报
回复
document.write()一般只在页面加载完成之前使用。 当页面加载完成之后,文档流会自动关闭,就不要用document.write()了 页面加载完成之后再使用document.write()就会重新创建一个新的页面。 都已经是新的页面,上个页面中的代码就没有了,当然不执行了。 这个新页面的源代码就是document.write()输出的字符串。 页面加载完成之后,要对页面内容改变和增加时应该用 innerHTML 和 appendChild()

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧