为什么javascript换行符不能在html中运行?

use*_*636 7 html javascript

所以我有以下内容:

<html>
  <body>
    <script type="text/javascript">
      document.write('Hello\nWorld')
    </script>
  </body>
</html>

你可能都知道\n不起作用,我不得不使用<br>.如果我链接到外部js文件,它将无法工作.这是我的问题:

1)为什么不起作用\n
2)为什么甚至工作?脚本标签内的所有内容都不应该是严格的javascript而不是html和js之间的混合吗?
3)有可能以\n某种方式开展工作吗?
4)我知道\t也不起作用.任何其他在html文件中无效的东西?
5)无关的问题(我不想为此开一个新问题).我安装了node.js以便能够从vim内部尝试js脚本,但是当我运行这个脚本时,我得到错误"文档未定义".当我尝试使用repl时,会发生同样的事情.有任何想法吗?

顺便说一句,我知道这些问题可能已被问过一百万次,但老实说我找不到好的答案,我得到的只是我应该用&lt;br>而不是\n.谢谢你的帮助.

Que*_*tin 13

为什么不工作?

因为空格只是HTML中的空格.

为什么<br>甚至有效?

因为它是换行符的HTML

脚本标签内的所有内容都不应该是严格的javascript而不是html和js之间的混合吗?

这是主观的.document.write被许多人认为也很脏.

您始终可以使用createElementcreateTextNode

是否有可能以某种方式使用?

,白空间

我知道也不起作用.任何其他在html文件中无效的东西?

HTML不是纯文本.列出所有差异将非常耗时,并超出StackOverflow的范围.尝试阅读规范.

无关的问题(我不想为此开一个新问题).

这完全不相关.打开一个新问题.


Mah*_*ndi 12

我有:

<div>Hello\nworld</div>
Run Code Online (Sandbox Code Playgroud)

我将以下 css 添加到div类中,现在可以正常工作了:

div {
      white-space: pre-wrap;
  }
Run Code Online (Sandbox Code Playgroud)

我希望这也能解决你的问题。


dav*_*vin 7

\n可以,如果您有各种调试器(或类似的开发人员工具),则可以看到文档源,并且您会看到确实有换行符。问题是您查看页面的方式-您没有阅读它的源代码,而是以html文档的形式阅读它。html中的空格被压缩为单个空格。因此,当您更改源代码时,它确实的确发生了更改,尽管当解释为html文档时,该更改不会显示。

您的node.js错误很可能是由您在服务器上运行浏览器脚本引起的。即,引用的脚本document旨在在具有DOM等的浏览器中运行。尽管通用节点进程因为不是浏览器而没有这样的全局对象。这样,当您尝试运行引用名为document的全局对象的代码时,假设它像在浏览器中一样存在,则会抛出错误。document.write不存在,如果要写入屏幕,请尝试console.log或查看其他util函数。