IE 7/8 javascript排序错误“;应为“数字”;
IE 7/8 javascript sorting error "Number Expected"
我有JSON对象
var x=[{@Name:'test 1',@Sort:'1',@Status:'yes'},
{@Name:'test 2',@Sort:'5',@Status:'yes'},
{@Name:'test 3',@Sort:'4',@Status:'no'},
{@Name:'test 5',@Sort:'2',@Status:'no'}]
我正在尝试按@sort、@Name和@Status对obj进行排序。
var orderBy="@Sort";
x.sort(_sortObj(orderBy));
function _sortObj(orderBy){
return function(a,b){
return (a[orderBy]<b[orderBy])?1:0....etc
}
}
它在Firefox和Chrome中运行良好。。。
但将IE 7/8中的错误作为"预期数字"在线
x.sort(_sortObj(orderBy));
我不确定发生了什么,如果有人能妥善解决这件事,那就太好了。
这不是一个JSON对象。属性名称和值必须用"双引号"括起来。
这可能是旧IE中出现错误的原因,它不理解其中的@
。
除了Kolink的答案之外,IE可能不会为了<
比较而将字符串数字强制转换为实际的数字对象。你可以通过乘以1:自己来执行强制
return (a[orderBy]*1 < b[orderBy]*1) ? 1 : 0;
我使用下面的排序插件解决了这个问题
http://www.thomasfrank.se/downloadableJS/objSort.js
感谢大家在方面帮助我
我和你有同样的问题,似乎是IE问题,也许你可以试试这个:
var orderBy="@Sort";
x.sort(_sortObj(orderBy));
function _sortObj(orderBy){
return function(a,b){
var aa = a,bb = b;
return (aa[orderBy]<bb[orderBy])?1:0....etc
}
}
你可以在这里找到一些帮助:http://www.zachleat.com/web/array-sort/comment-page-1/#comment-3941
相关文章:
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 应为标识符,而看到'<'
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 将数组键转换为数字node.js
- Typescript编译器错误,Angular 1.5组件应为分号
- dractor.js应为[]等于[“..”,“..”]
- React.createElement:类型不应为null或未定义
- 未定义应为节点模块的对象
- 试图了解如何使用parseFloat将字符串转换为数字
- 如何在html中将字符串转换为数字?以及如何将变量传递到scriptlet代码中
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- spyOn:应为间谍,但得到了Function
- Podio问题:Can't将字符串转换为数字
- 打印到控制台时为NaN,但typeof为数字jquery
- 在Javascript中,如何在JSON对象中将1.00表示为数字
- 警告:失败的propType:类型为“array”的无效prop应为React的“object”
- 警告:React.createElement:类型不应为空、未定义、布尔值或数字
- IE 7/8 javascript排序错误“;应为“数字”;
- Jquery-第一个字母不应为数字