我在其中一个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中出现错误,但问题仅出现在此浏览器中)
我该如何摆脱这个错误?
答案 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'));