为什么writeln();不生产新生产线?

时间:2012-04-20 13:28:16

标签: javascript logic

  <script type='text/javascript'> 
  //<![CDATA[
   for(var j = 0; j < 6;) {
    document.writeln(++j);
   }
  //]]>
  </script>

在上面的代码中,如果引用The writeln() method is identical to the write() method, with the addition of writing a newline character after each statement.

的定义,它会假设给出一个新行

但就我而言,输出为123456

更新:

我会找到最好的答案接受,但所有的答案都是正确的,我相信下次有人会有同样的问题,所以我想我应该更新顶部的答案并删除作业标签,这样这将使每个人受益。

没有产生新行的原因是因为它实际上产生'\ n'

浏览器的'\ n'如果我没有错,它不会影响如何显示到屏幕上,但如果你查看页面的源代码,你会看到我的输出会显示像这样的东西

1
2
3
4
5
6

但是如果我们希望它将其显示在页面上,我们就必须添加<br\>标记,这样它才能生成break-line,这样我们就可以得到我们想要的相同输出。

  <script type='text/javascript'> 
  //<![CDATA[
   for(var j = 0; j < 6;) {
    document.writeln(++j);
    document.writeln("<br>");
   }
  //]]>
  </script>

7 个答案:

答案 0 :(得分:5)

考虑以下HTML

<p>
1
2
3
4
</p>

将显示在浏览器中。

答案 1 :(得分:5)

在大多数情况下,浏览器不会将'\n'显示为换行符。

这可以是changed with CSS<pre> tags;否则,使用<br/>(不是很好)或块级元素(<div><p>等)来在文本中引入中断。

答案 2 :(得分:2)

\n仅在代码来源或<pre></pre>代码中可见。如果要在HTML文档中显示输出,则必须添加<br />才能获得新行。

答案 3 :(得分:2)

不,它工作正常。这里的问题是你在不同的行输出它,但它不会在浏览器中以这种方式显示。

要查看实际结果,请使用“查看源代码”或在浏览器的开发者工具中查看HTML。

如果你想让它显示在不同的行上,请输入一些HTML,如下所示。

  <script type='text/javascript'> 
  //<![CDATA[
   for(var j = 0; j < 6;) {
    document.write(++j);
    document.writeln("<br>");
   }
  //]]>
  </script>

或使用PRE(又名预格式化)标记(see W3 spec info on PRE here),这将保留基础来源中的换行符。

答案 4 :(得分:1)

它正在写入新行,只有浏览器不会向您显示这些行,除非您明确指示它这样做。看看在输出周围添加预格式化标签的效果:

var i = 0;
document.write('<pre>');
while ( i < 5 ) document.writeln(++i); 
document.write('</pre>');

验证此类输出的最佳方法是查看页面的来源,而不是页面本身。

答案 5 :(得分:1)

您需要使用<br/>。浏览W3Schools教程here

答案 6 :(得分:1)

如果您使用Firebug窥探源代码并将其复制到像Noteapd ++这样的内容中,您会发现它确实输出了换行符。它们不会显示在浏览器中,因为HTML中的换行符未定义为换行符。