所以我有以下内容:
<html> <body> <script type="text/javascript"> document.write('Hello\nWorld') </script> </body> </html>
你可能都知道\ n不起作用,我必须使用&lt; br&gt;代替。 如果我链接到外部js文件,它将无法工作。以下是我的问题:
1)为什么\n
不起作用?
2)为什么&lt; br&gt;甚至工作?不应该是脚本中的所有内容
标签是严格的javascript而不是html和js之间的脏混合?
3)是否有可能以某种方式使\n
工作?
4)我知道\t
也不起作用。任何其他内部无效的东西
HTML文件?
5)无关的问题(我不想为此开一个新问题)。
我安装了node.js,以便能够从vim内部尝试js脚本
当我运行此脚本时,我收到错误“文档未定义”。当我尝试使用repl时,会发生同样的事情。有什么想法吗?
<br>
代替\n
。谢谢你的帮助。
答案 0 :(得分:12)
为什么不工作?
因为空格只是HTML中的空格。
<br>
为什么会工作?
因为它是换行符的HTML
脚本标签内的所有内容都不应该是严格的javascript而不是html和js之间的混合?
这是主观的。 document.write
被许多人视为肮脏。
您始终可以使用createElement和createTextNode
是否有可能以某种方式使用?
我知道\ t也不起作用。任何其他在html文件中无效的东西?
HTML不是纯文本。列出所有差异将非常耗时,并超出StackOverflow的范围。尝试阅读规范。
无关的问题(我不想为此开一个新问题)。
完全不相关。打开一个新问题。
答案 1 :(得分:5)
\n
有效,如果您有各种类型的调试器(或类似的开发人员工具),您可以看到文档源,并且您将看到确实存在换行符。问题在于您查看页面的方式 - 您不阅读它的来源,您将其作为html文档阅读。 html中的空格被压缩为单个空格。因此,当您更改源时,它确实会发生更改,但在解释为html文档时,不会显示该更改。
您的node.js错误很可能是因为您在服务器上运行浏览器脚本。即引用document
的脚本旨在在浏览器中运行,其中存在DOM等。虽然通用节点进程没有这样的全局对象,因为它不是浏览器。因此,当您尝试运行引用名为document的全局对象的代码时,假设它就像在浏览器中一样存在,它将引发错误。 document.write
不存在,如果要写入屏幕,请尝试console.log
或查看其他util函数。
答案 2 :(得分:4)
我有:
<div>Hello\nworld</div>
我将以下CSS添加到div
类中,并且现在可以正常工作:
div {
white-space: pre-wrap;
}
我希望这也能解决您的问题。
答案 3 :(得分:3)
当HTML呈现时,它会忽略空格。因此,唯一的方法是使用换行符。
使用<br/>
代替\n
,它可以正常使用
document.write()
函数将HTML写入元素。
答案 4 :(得分:1)
当您写入页面时,您不是在编写JavaScript;你在写HTML。 \ n是一个特殊的“换行符”字符,它不会在浏览器的HTML呈现中创建换行符。它将在HTML文件本身中创建换行符,但浏览器在呈现标记时不会考虑这一点。
因此,需要br标签。
答案 5 :(得分:1)
使用html标记<br/>
输入行结尾(您的输出由html解析器解释),例如:
使用Javascript:
document.write("Hello<br/>World");
答案 6 :(得分:0)
JavaScript发出的空格与HTML文件中的任何其他空格一样。这对我来说似乎是预期的行为。
答案 7 :(得分:0)
1)\n
适用于纯文本文件。
2)<br />
有效,因为你在字符串中做HTML。字符串可以保存字符而不会破坏JS脚本的其余部分。
3)不是真的。也许当你使用<textarea>
时。
4)大多数其他\*
的
5)需要更多信息。
答案 8 :(得分:0)
1,3。 “\ n”确实有效。如果你在body标签里面做了document.write,你可以查看document.body.innerHTML,看看换行确实在那里。
4.任何特定于HTML的内容都会针对HTML呈现,因此您必须将<
和>
转换为<
和>
。
5. document
是浏览器中可用的对象,它不在节点中使用,因为那里不存在DOM。 require("sys");
并在nodejs中使用sys.print。
答案 9 :(得分:0)
document
对象表示HTML文档;写入文档的任何文本都将由浏览器的HTML渲染器处理。在HTML中,所有相邻的空格(包括换行符(例如"\n"
))在渲染时都会折叠为单个空格。这就是你需要<br />
的原因,它被渲染为换行符。您可以通过将\n
替换为<br />
或写入<pre>
元素来使{{1}}工作:
Hello World
答案 10 :(得分:0)
实际上你的代码是有效的。当您在Firefox等浏览器控制台上运行它时,它会显示:
<html><head></head><body>
<script type="text/javascript">
document.write('Hello\nWorld')
</script>Hello
World
</body></html>
关于分离的Hello和World的注释。
但是当在HTML上显示时,将会忽略换行符(空格)。
要显示“按原样”,您可以使用PRE标记包围javascript,例如:
<html>
<body>
<pre>
<script type="text/javascript">
document.write('Hello\nWorld')
</script>
</pre>
</body>
</html>
您将在HTML上显示换行符。
答案 11 :(得分:0)
每个人都说过要说的内容,但万一你使用的是firebug / chrome Javascript控制台..然后试试这个&gt;
console.log("Hello\nWorld");
这是关键的区别。当您使用HTML打印内容时,HTML规则适用。在其他地方,你可以看到换行符。
答案 12 :(得分:0)
在html上使用<pre></pre>
,它将遵循JS中的文本格式。