在比较字符串时IE中的预期错误数

时间:2013-03-16 09:45:21

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

我在其中一个javascript插件中有一个sort函数,代码看起来像这样:

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错误并停在上面代码中显示的行。控制台在此行显示消息“Number expected”。

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

2 个答案:

答案 0 :(得分:2)

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

使用此代替

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

因为这是一个问题,即&lt; 9使用toLowerCase随机返回未知数据类型...如果你不在sort中重新分配变量,它将表现出来。

答案 1 :(得分:0)

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

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

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