Javascript IE中比较字符串时出现的预期错误数
我在一个javascript插件中有一个排序函数,代码如下所示:Javascript IE中比较字符串时出现的预期错误数,javascript,html,internet-explorer,internet-explorer-8,Javascript,Html,Internet Explorer,Internet Explorer 8,我在一个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
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;
});
groups=groups.sort(函数a,b){
a=a.content.toString().toLowerCase().replace(/\s+/g');
b=b.content.toString().toLowerCase().replace(/\s+/g');
如果(a>b){//停止并在此处给出错误
返回1;
}
if(a
a.content
实际上是一个字符串本身(但只是为了IE,我在代码中添加了.toString()
。在所有其他浏览器上,上述代码在所有浏览器上都可以正常运行,但在IE 8上,上述代码显示JavaScript错误并在上面代码中显示的行停止。控制台在这一行显示消息“Number expected” (有时
a.content
也可能有一些这种形式的html->“示例字符串”
不确定这是否会导致IE8中的错误,但该问题仅在此浏览器中出现)
如何消除此错误?我记得当IE添加了一些空白空间时,IE出现了一些问题……请尝试修剪 或者…您是否尝试使用.localeCompare比较字符串
alert('a'.localeCompare('b'));
alert('a'.localeCompare('a'));
alert('b'.localeCompare('a'));
用这个代替
var a1 = a = a.content.toString().toLowerCase()
由于ie<9存在一个问题,toLowerCase随机返回未知的数据类型……如果不按排序重新分配变量,它将正常工作。由于它是特定于浏览器的,因此需要进行一些修补,因为我至少不清楚ie中出了什么问题。您能否创建一个JSFIDLE,将一些示例值加载到组中,以便我们能够是否要复制错误?我尝试了
localeCompare
,但这搞砸了我的排序。例如:Relaucch112
出现在Relaunch
或类似的东西之前。我没有尝试查看localeCompare是否在IE上工作,因为排序不是我想要的。另外,我为编写的代码。replace()
在我上面的帖子中,将删除空格,所以我认为这不应该是一个问题。这是否已回答?
var a1 = a = a.content.toString().toLowerCase()