<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<!--疑问代码块-->
<div id="con">
<script type="text/javascript">
document.write("absobute");
var A=document.getElementById("con");
document.write(A.innerHTML)
</script>
</div>
</body>
</html>是不是可以这样解释:把document,getElementById()放在指定标签的后代节点内,由于方法会遍历子节点,因此又再调用了此方法,然后进入循环。不过这明显不是死循环啊,只是文本重复很多次而已。怎么解释了?
2 回答
已采纳
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
这是死循环的。但是浏览器没有死循环,应该是浏览器的堆栈溢出了。循环到一定程度,嵌套的document.write就不再输出了。但是,后面的代码依然可以运行。
我用一段更加简单的代码来测试。
<!DOCTYPE html> <script> var i=0; var script='<script>i++;console.log("before "+i);document.write(i+" ");console.log("after "+i);document.write(script);<\/script>'; document.write(script); // 嵌套到一定程度,就不会再输出 document.write('<br>end: ' + i+'<br>'); // 后面的代码依然可以继续运行 document.write(script); // 再来嵌套一次 document.write('<br>end: ' + i+'<br>'); document.write(script); document.write('<br>end: ' + i+'<br>'); </script>
在IE11上,提示堆栈溢出,嵌套的document.write不再输出。不过,非嵌套的代码依然继续运行。
Chrome上,没提示。但是可以看到,循环到一定程度,嵌套的document.write就不再输出了,非嵌套的代码继续运行。
添加回答
举报
0/150
提交
取消