【问题标题】:Number expected error in IE on comparing strings比较字符串时 IE 中的数字预期错误
【发布时间】:2013-06-11 11:28:05
【问题描述】:

我在其中一个 javascript 插件中有一个排序功能,代码看起来像这样:

groups = groups.sort(function (a, b) {
    a = a.content.toString().toLowerCase().replace(/\s+/g, '');
    b = b.content.toString().toLowerCase().replace(/\s+/g, '');
if(a > b){ //stops and gives error here
return 1;
}
if(a < b){
return -1;
}
return 0;
});

a.content 实际上是一个字符串本身(但只是为了 IE,我在代码中也添加了.toString()
在所有其他浏览器上,上面的代码在所有浏览器上运行良好,但在 IE 8 上,上面的代码显示 JavaScript 错误并停在上面代码所示的行。控制台在此行显示一条消息“预期数量”。

(有时a.content 可能也有一些这种形式的 html ->
"&lt;span&gt;Sample String&lt;/span&gt;"
不确定这是否会导致 IE8 中的错误,但问题仅出现在此浏览器中)
我该如何摆脱这个错误?

【问题讨论】:

  • 由于它是特定于浏览器的,因此需要一些修补,因为至少对我来说,IE 中的问题并不明显。您能否创建一个 jsfiddle 并将一些示例值加载到组中,以便我们可以复制错误?

标签: javascript html internet-explorer internet-explorer-8


【解决方案1】:
a = a.content.toString().toLowerCase()

改用这个

var a1 =    a = a.content.toString().toLowerCase()

因为 ie

【讨论】:

  • 将此标记为已回答?
【解决方案2】:

我记得当 IE 添加一些空白时,IE 中出现了一些问题...尝试修剪。

或者...您是否尝试使用 .localeCompare 比较字符串?

alert('a'.localeCompare('b'));
alert('a'.localeCompare('a'));
alert('b'.localeCompare('a'));

【讨论】:

  • 我试过localeCompare,但这搞砸了我的排序。例如:Relaucch112 出现在 Relaunch 或类似的东西之前。如果它在 IE 上工作,我没有尝试查看 localeCompare,因为排序不是我想要的。
  • 另外,我在上面的帖子中为.replace() 编写的代码将删除空格,所以我认为这应该不是问题
猜你喜欢
  • 2015-03-26
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多