1

我在其中一个 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 ->
"<span>Sample String</span>"
不确定这是否会导致 IE8 中的错误,但问题仅出现在此浏览器中)
如何摆脱此错误?

4

2 回答 2

2
a = a.content.toString().toLowerCase()

改用这个

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

由于 ie < 9 存在问题,toLowerCase 随机返回未知数据类型...如果您不重新分配排序中的变量,它将运行。

于 2013-06-11T03:28:05.600 回答
0

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

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

alert('a'.localeCompare('b'));
alert('a'.localeCompare('a'));
alert('b'.localeCompare('a'));
于 2013-03-16T09:57:25.403 回答