【问题标题】:Wrong string replacement in JavascriptJavascript中错误的字符串替换
【发布时间】:2019-03-02 21:36:49
【问题描述】:

使用 Javascript 在网页上显示数据时遇到以下问题。

代码如下:

myString.replace('\n', '<br/>');

我想目的很明确,我想用
标记替换 '\n' 换行标记,做同样的事情,但在 HTML 中。

问题是:

从字符串开始:abc\nXYZ 而不是像我期望的那样得到 abcXYZ,我最终得到 abc & lt; br/>XYZ.这当然不是我想要的,因为效果不一样。

什么是正确的解决方法?

【问题讨论】:

  • 当我在控制台中记录结果时,"abc\nXYZ".replace('\n', '&lt;br/&gt;'); 给了我"abc&lt;br/&gt;XYZ"。为什么你认为你会得到 abc &amp; lt;br/&amp; gt;XYZ ?之后你还做其他事情吗?
  • 我想这是因为你的控制台解释了 <作为 。我也在我的网页上看到了这个,但是如果我查看页面的源代码,我会看到 abc
    XYZ。我应该在源代码中看到 abc
    XYZ 并跳转到网页中的下一行。
  • javascript 不要以不同的方式对待&lt; AFAIK,所以它不应该得到&amp;lt
  • @Ashraf 这不是重复的。字符串替换工作正常。这里的问题是关于字符 的特殊处理。

标签: javascript html string replace str-replace


【解决方案1】:

这里的问题是\n&lt;br/&gt; 标记的字符串 版本替换,意思是HTML 翻译它的方式,以便&lt;&gt; 出现而不是充当标签。

您应该做的是获取 HTML 并替换其中的部分。像这样的:

var myDiv = Document.getElementById('my-div');
var myDivContent = myDiv.innerHTML;
myDiv.innerHTML = myDivContent.replace("\\n", "<br/>");

【讨论】:

  • 这个解决方案虽然比我想的要复杂,但我愿意尝试,但是当我尝试时,我得到这个错误:“文档未定义”。我该怎么办?我在 node.js 中使用 express。
  • 哦,所以你使用Node JS,所以后端javascript。 Document 是 DOM 的一部分,因此在这种情况下它不起作用。您究竟是如何将此字符串返回给客户端的?
  • 我放弃了挑战这条道路。使用 express 处理问题要容易得多。只是把绳子剪成碎片。
【解决方案2】:

获取内部 HTML,然后将 str.replace("\n", "&lt;br/&gt;") 放回内部 HTML。我附上了工作演示的代码 sn-p。

function myFunction() {
  var str = document.getElementById("demo").innerHTML;
  var res = str.replace("\n", "<br/>");
  document.getElementById("demo").innerHTML = res;
}
<!DOCTYPE html>
<html>

<body>

  <p>Click the button to replace carriage returns with line-break in the paragraph below:</p>

  <p id="demo">Visit 
  Stack Overflow!</p>

  <button onclick="myFunction()">Try it</button>

</body>

</html>

【讨论】:

  • OP 使用的是子字符串匹配,而不是正则表达式匹配。并且没有提到任何全局匹配问题。
  • 感谢您的指出。进行了必要的调整。 @appleapple
  • 使用:myString.replace("\\n", "
    ") 不起作用。我尝试过这个。它会跳转到页面源代码中的下一行,但不会跳转到页面本身。我希望跳转发生在页面上。
  • @Michel 我不完全理解“跳转页面本身”是什么意思,你能解释一下你想要实现的目标吗?
  • 感谢 sn-p,但我不想单击按钮。我发现使用 express/ejs 处理它终于更简单了。
猜你喜欢
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多