<p>hello</p>
<script type="text/javascript">
document.write("<!--");
</script>
<p>world</p>
<script type="text/javascript">
document.write("-->");
</script>
<p>nihao</p>
我认为这段HTML的输出是
hello
nihao
但结果如下:
hello
");
nihao
我应该如何达到我的预期?这有什么问题?
答案 0 :(得分:7)
好吧,第一个JavaScript元素被执行,导致这样的表示:
<p>hello</p>
<!--
<p>world</p>
<script type="text/javascript">
document.write("-->");
</script>
<p>nihao</p>
所以HTML注释开始你刚刚将spans添加到你的下一个JavaScript元素中,结果输出正如你所描述的那样。要回答你的第二个问题,以下是错误的吗?
<p>hello</p>
<script type="text/javascript">
document.write("<!--<p>world</p>-->");
</script>
<p>nihao</p>
答案 1 :(得分:5)
这是因为在JavaScript运行之前,javascript中的<!--
被解析为注释的开头。
答案 2 :(得分:4)
有一些有用的答案,但如果你真的想创建一个评论并将其插入你的文档,那么你需要使用createComment()
function:
var comment = document.createComment("This is a comment")
document.appendChild(comment);
将输出:
<!--This is a comment-->
答案 3 :(得分:2)
要获得您期望的完全结果:
<p>hello</p>
<script id="ahh" type="text/javascript">
document.write("<!"+"--"+"<p>world<p>--"+">");
document.getElementById('ahh').remove()
</script>
<p>nihao</p>
无论如何,这是非常糟糕的主意。
答案 4 :(得分:0)
如果像我一样,您遇到此问题想要在启用JavaScript时隐藏元素,请考虑改用<noscript>
标签!