【问题标题】:NewLine escape character not working换行符转义符不起作用
【发布时间】:2012-04-30 20:06:26
【问题描述】:

我们知道 \n 用于在 JavaScript 中换行。
我应该如何将它用于输出(在 for 循环中):

str=prompt("Enter any string!");
    for(i=0;i<str.length;i++)
    {
        document.write('\n'+str.charCodeAt(i));
    }   

str=prompt("Enter any string!");
    for(i=0;i<str.length;i++)
    {
        document.write('\n'+str.charCodeAt(i));
    }

似乎都不起作用。

【问题讨论】:

    标签: javascript html newline


    【解决方案1】:

    这与 JavaScript 无关。在 HTML 中,所有空格(包括换行符)都被折叠并视为一个空格。

    在 HTML 中换行:

    【讨论】:

    • 我明白了,那么 \n 是为了什么?它曾经像我一样使用过吗?
    • @popstack:JavaScript 不限于处理 HTML;它是一种通用语言。 (最初甚至不是为网络浏览器设计的,而是为网络服务器设计的;但它很快被添加到 Netscape Navigator 中,剩下的就是历史了。)在处理其他事情时,\n 可能是换行符。例如,即使在浏览器中,alert("Foo\nbar"); 也会在警告框中显示两行,因为您提供给 alert 的文本不是 HTML。
    • 同意。您可能希望干净地打印您的源代码。即使在显示 HTML 时,查看源代码也会以不同于 HTML 输出到页面的方式处理空白。
    【解决方案2】:

    如果您要写入文档,则需要 document.write('&lt;br/&gt;'+str.charCodeAt(i)); - 或在&lt;pre&gt; 标记(或具有white-space:pre 样式属性的另一个元素)中设置您的输出。

    【讨论】:

    • @popstack: &lt;br/&gt;&lt;br&gt; 的 XHTML 版本。由于您没有使用 XHTML,因此您只需使用&lt;br&gt;。 (我怎么知道你没有使用 XHTML?因为你使用的是 document.write,你不能在 XHTML 中使用它。)
    • 您可以使用任何一种 - 自关闭 &lt;br/&gt; 对所有文档类型都有效,而 &lt;br&gt; 对于 XHTML 文档类型无效
    • @Mikey:Grr,删除线在 cmets 中不起作用。假设您看到了所示的删除线。 &lt;br/&gt; 在 HTML4 及更早版本中无效。浏览器容忍它,但这是错误的。在 HTML5 中,有一个特殊的解析案例专门允许它(因为人们一直在 HTML 文档中错误地使用它)。我可能不得不收回它,我只是尝试了告诉它使用 HTML 4.01 strict 的验证器,并且它让它通过。可以宣誓它是无效的。
    • 而且,我应该使用单引号还是双引号?我们是否有这方面的指导方针(我必须严格使用 HTML 4.01)?
    • javascript 将接受"',只要您在字符串的每一端使用相同的引号
    【解决方案3】:

    使用 document.writeln() 方法。

    writeln() 方法与 write() 方法相同,只是在每个语句后添加了一个换行符。

    试试这个

     str=prompt("Enter any string!");
     for(i=0;i<str.length;i++)
     {
        document.writeln(str.charCodeAt(i));
     } 
    

    【讨论】:

      【解决方案4】:

      我提出了一个更好的解决方案。在行动中看到它https://repl.it/@mamamia5x/Example

      在css中做

      h1 span::before { 
        content: "\A";
        white-space: pre;
      }
      

      用你拥有的任何东西替换 h1。现在,每当您执行&lt;span&gt; 时,都会换行。因此,每当有人说 /n 时,它就会执行 &lt;span&gt; 并换行。

      if (txt.charAt(i) == '/' && txt.charAt(i + 1) =='n'){
         document.getElementById("text").innerHTML += " <span>";
         i = i + 2;
      } 
      

      https://repl.it/@mamamia5x/Example 正在运行,这是我用于https://live-stream.mamamia5x.repl.co/ 的一个项目。

      我还让它与&lt;br&gt; 一起工作。如果你想这样做,你可以这样做

      if (txt.charAt(i) == '<' && txt.charAt(i + 1) == 'b' && txt.charAt(i + 2) == 'r' && txt.charAt(i + 3) == '>'){
      

      您也可以将两者混合在一起,它可以允许/n&lt;br&gt;

      【讨论】:

        【解决方案5】:

        使用 &lt;br&gt; 而不是 \n 它相对于 HTML

        【讨论】:

          猜你喜欢
          • 2021-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-08
          • 2014-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多