首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE 7/8 javascript排序错误"Number Expected“

IE 7/8 javascript排序错误"Number Expected“
EN

Stack Overflow用户
提问于 2012-03-27 00:01:43
回答 4查看 1.2K关注 0票数 2

我有一个JSON对象

代码语言:javascript
复制
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进行排序。

代码语言:javascript
复制
    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中行抛出错误为"number expected“

代码语言:javascript
复制
  x.sort(_sortObj(orderBy));

我不确定发生了什么,如果有人能正确地解决这个问题,那就太好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-12 22:36:19

我用下面的排序插件解决了这个问题,

http://www.thomasfrank.se/downloadableJS/objSort.js

谢谢你们帮我的忙

票数 0
EN

Stack Overflow用户

发布于 2012-03-27 00:04:25

这不是JSON对象。属性名称和值必须用“双引号”括起来。

这可能是旧版IE出错的原因,它不能识别存在的@

票数 1
EN

Stack Overflow用户

发布于 2012-03-27 02:02:08

除了Kolink的答案之外,IE可能不会强制将string-y数字转换为用于<比较的实际数字对象。您可以自己执行强制,方法是乘以1:

代码语言:javascript
复制
return (a[orderBy]*1 < b[orderBy]*1) ? 1 : 0;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9875565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档