IE在比较字符串时的预期错误数
Number expected error in IE on comparing strings
我在一个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错误,并停在上面代码中所示的行。控制台在这一行显示一条消息"Number expected"。
(有时a.content
也可能在这个表单中有一些html ->"<span>Sample String</span>"
。
不确定这是否会导致IE8的错误,但这个问题只发生在这个浏览器中)
如何消除这个错误?
a = a.content.toString().toLowerCase()
用这个代替
var a1 = a = a.content.toString().toLowerCase()
因为ie <9与toLowerCase返回未知数据类型随机…如果你不在sort中重新赋值变量,它就会正常工作。
我记得在IE中添加一些空白时出现了一些问题…试着修剪。
还是……你是否尝试使用。localecompare比较字符串?
alert('a'.localeCompare('b'));
alert('a'.localeCompare('a'));
alert('b'.localeCompare('a'));
相关文章:
- 比较两个值时出现JavaScript输出和控制流错误
- 字符串比较显示从flash[:alert]检索到的字符串上的错误
- JSLint字符串比较错误应为'==='而是看到'=='
- 将单选按钮结果与数组值进行比较时出现函数错误
- 如何在不获得引用错误的情况下将不存在的JavaScript对象与未定义的对象进行比较
- 比较字符串,如果存在小的拼写错误,则返回 true
- 与 FALSE 的比较等同于否定值.这是一个重新锐利的错误
- 非常奇怪的行为,比较未定义和错误
- 当字符串中存在空格时,字符串比较会给出错误的输出
- Ant JavaScript 相同的字符串比较给出了错误的结果,但 char compare 给出了字符串中每个字符的
- 选择选项值比较给出错误的结果
- 为什么我的日期比较函数会抛出错误
- 带有护照的节点:比较密码抛出错误未定义不是一个函数,当它返回返回完成(null,用户);
- 比较 JavaScript 中的字符串 - 逻辑错误
- ASM.js 类型错误:比较的参数必须同时是有符号、无符号或双精度
- Javascript日期比较错误
- 短手(类型不同)是字符串的正确/错误比较的好方法
- 启动日期选择器日期比较错误(英国/美国格式错误)
- 未捕获的类型错误:无法使用'在'操作员搜索'7'当我试着比较日期的时候
- 与0和JSLint错误比较