用javascript替换换行符

用javascript替换换行符,javascript,jquery,internet-explorer-8,Javascript,Jquery,Internet Explorer 8,尝试替换和呈现HTML中来自DB的文本中的换行符。值是用java输入的,因此值应包含“\n”。值显示在具有“toggleBreaks”类的范围标记中。代码在Firefox和Chrome中运行良好,但在IE8上不起作用。我还没有尝试过其他的IE版本,但遗憾的是我需要IE8 $('.toggleBreaks').each(function(index) { var orgText = $(this).html(); var regex = /\r?\n/g; if (rege

尝试替换和呈现HTML中来自DB的文本中的换行符。值是用java输入的,因此值应包含“\n”。值显示在具有“toggleBreaks”类的范围标记中。代码在Firefox和Chrome中运行良好,但在IE8上不起作用。我还没有尝试过其他的IE版本,但遗憾的是我需要IE8

$('.toggleBreaks').each(function(index) {
    var orgText = $(this).html();
    var regex = /\r?\n/g;
    if (regex.test(orgText)) {
      var modText = orgText.replace(regex, "<br />");
      $(this).html(modText);
    }
});

我几乎能够通过应用样式“pre-wrap”来完成对页面中现有换行符的尊重,但这在IE8中也不起作用。

为什么它在IE8中失败了?错误?由于某种原因,我看到使用/\n\r?/g而不是只删除if条件并将/\r?\n/g更改为/\r\n/g。这就解决了问题。@Christianezani怎么会这样?我没有意识到这一点,但if语句有点多余,但我不知道这将如何解决问题。另外,使用/\r\n/g也不是一个好主意,因为并非所有浏览器都有\r部分,您需要它作为一个附件,代码可以简化很多-您不需要.each或工作变量,如果您:$'.toggleBreaks.htmlfunction,oldHtml{return oldHtml.replace/\r\n/g,;};当然,你仍然需要确保你有一个合适的正则表达式。