【问题标题】:How to remove linebreaks in IE with Javascript?如何使用 Javascript 删除 IE 中的换行符?
【发布时间】:2011-09-16 16:51:49
【问题描述】:

我正在尝试使用 JavaScript 删除换行符。它适用于除 Internet Explorer 之外的所有浏览器(在 ie7、ie8 中测试)。我已经阅读了很多帖子,但找不到解决问题的方法。

Var someText = "Here’s your text.\n It has line breaks that need to be removed.\rUsing Javascript.\r\n"; 

someText = someText.replace(/(\r\n|\n|\r)/gm,"");

我还能尝试什么?

* 已编辑 *****

这里有更多代码和对我的问题的更好解释:

function checkLength(fn) {
    var fn = document.getElementById(fn);
    var fnb = fn.value;
    var fnb = fnb.replace(/(\r\n|\n|\r)/gm,"");
    var len = fnb.length;
    ...

我要做的是计算文本区域中的字符数。我不得不同时使用 Javascript 和 PHP 进行计算,并且由于换行符,PHP 和 Javascript 从来没有达到相同的数字。删除换行符时,除了在 Internet Explorer 中(当我使用 Javascript 计算时)外,一切都很好。 fnb.replace 不会更改 Internet Explorer 中的任何字符数,这就是为什么我确信它不会正确删除换行符的原因。在所有其他浏览器中都很好,我可以在删除 javascript 中的换行符后看到计数器的差异。只有在 ie 中它不会改变任何事情。我已经尝试了一些事情以及您在下面的建议,并且在删除换行符之前和之后的字符数在 ie 中是相同的。

/////////我的回答////////////////////////////// /

function checkLength(fn) {
    var fn = document.getElementById(fn);
    var fnb = fn.value;
    var fnb = fnb.replace(/(\r\n|\n|\r)/gm,"");
    var len = fnb.length;
...

就像 Tomalak 所说,我的逻辑可以改进 - 很抱歉对 JavaScript 和编程不熟悉。也许托马拉克不会犯任何错误,但我相信其他人都会犯错。我们必须犯错误才能学习。

Internet Explorer 不喜欢

var fn = document.getElementById(fn);
var fnb = fn.value;

我不得不把它改成:

var fnb = document.getElementById(fn).value;

即使它不合逻辑,它也应该有效。它确实适用于除 ie 之外的所有浏览器。这是一个错误。

这就是我一直在寻找的答案。

【问题讨论】:

  • 您过于专注于尝试找到完全不同的东西来“尝试”,而不是试图找出您当前的代码导致错误的原因(我只能假设您是得到一个错误,因为你还没有真正告诉我们发生了什么)。事实上,除了我在回答中讨论的Var 的问题之外,the code is fine 所以你需要查看你在代码的其他领域已经拥有的东西,并找出你做错了什么。跨度>
  • 这不是您要问的问题,但这个正则表达式更简单:/\r|\n/gm
  • @Toamalak :我更新了我的帖子,您现在有了更多详细信息。对不起,我不是职业选手。我希望我能成为,但我必须从某个地方开始。
  • @Mathiew:您不必成为 Javascript 的“专业人士”就可以从逻辑上思考问题。这是一般的生活技能。 :) 而且我无法真正解析该编辑;这对我来说只是一堵巨大的文字墙。我认为当你有一个测试用例和一个特定的问题以及一段特定的、缩小的代码时,你将不得不回来。

标签: javascript line-breaks


【解决方案1】:

试试这个:

someText = someText.replace(/[\r\n]+/gm,"");

【讨论】:

  • 这在功能上与原版有何不同?为什么原来在IE里坏掉了?
【解决方案2】:

事实上,正则表达式至少在 IE8.0 中工作得很好。

真正的问题是你写的是Var而不是var; Firefox 可以让你侥幸逃脱,但 IE 不行。

【讨论】:

  • @Mathiew:它对我来说很好用。你一定是做错了什么。是时候打破开发者控制台并获得实际的错误消息了。 (实际上是时候在那一刻你遇到问题了!)
  • @Mathiew:帮我检查一下 tom.kera.name/lol.html 在 IE8 中对你“不起作用”。
  • 你是对的。它确实以这种方式工作。我将编辑我的帖子并显示更多我的代码。
【解决方案3】:

你不需要 m 标志,但你应该用空格代替任何东西。

someText = someText.replace(/[\r\n]+/g,' ');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2022-01-18
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多