【问题标题】:How can new line be respected when updating content of a <pre> tag?更新 <pre> 标记的内容时如何尊重新行?
【发布时间】:2017-06-12 16:42:27
【问题描述】:

在看到this answer 之后,我试图找到一种方法来更新&lt;pre&gt; 标记的内容,并使用隐式换行符(即在字符串文字中)显示换行符。我尝试设置各种属性:innerHTMLinnerTexttextContentnodeValue(检查this question 的答案后)但似乎没有一个保留空白。

我知道我可以使用 String.fromCharCode() - 例如"Bob " + String.fromCharCode(10, 13) + "is "... 但也想找到一种使用前一种语法的方法。

//Perfectly valid code
var foo = "Bob \
is \
cool.";
document.addEventListener('DOMContentLoaded', function() {
  document.getElementById('pre').textContent = foo;
});
&lt;pre id="pre"&gt;&lt;/pre&gt;

有没有办法根据需要更新内容?

【问题讨论】:

  • 在字符串中使用\n

标签: javascript html newline pre


【解决方案1】:

您似乎误解了您所链接的答案。答案是:

如果您希望有一个跨越多行的字符串,您可以在终止该行之前插入一个反斜杠字符“\”,如下所示:

//Perfectly valid code
var foo = "Bob \
is \
cool.";

但是,该字符串将在字符串被分成不同行的位置包含\n 字符。在字符串中插入换行符的唯一方法是插入一个值为 10 的字符,最简单的方法是 \n 转义字符。

var foo = "Bob\nis\ncool.";

所以你应该这样做:

//Perfectly valid code
var foo = "Bob\nis\ncool.";
document.addEventListener('DOMContentLoaded', function() {
  document.getElementById('pre').textContent = foo;
});
&lt;pre id="pre"&gt;&lt;/pre&gt;

如果您希望 both 将字符串分成多行 并且 在字符串中包含换行符,则两者都需要:

//Perfectly valid code
var foo = "Bob\n\
is\n\
cool.";
document.addEventListener('DOMContentLoaded', function() {
  document.getElementById('pre').textContent = foo;
});
&lt;pre id="pre"&gt;&lt;/pre&gt;

【讨论】:

    【解决方案2】:

    另一种方法是使用template literals

    // template literal syntax
    var foo = `Bob 
    is 
    cool.`;
    document.addEventListener('DOMContentLoaded', function() {
      document.getElementById('pre').textContent = foo;
    });
    &lt;pre id="pre"&gt;&lt;/pre&gt;

    【讨论】:

    猜你喜欢
    • 2020-06-02
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多