获取对象值报错 Cannot use 'in' operator to search for 'length' in

var s = {
    "a":[{
        "name":"...",
        "dec":".."
    }],
    "b":[{
        "name":"...",
        "dec":".."
    }]  
}

$("#id").click(function(){   
    show("a")
})

function show(key){
    $.each(s+'.'+key, function(i,e) {
          ....
    });
}

如上~~ console.log(s.a);
正常输出
传参就不对了
Cannot use 'in' operator to search for 'length' in [object Object].a
求解答

阅读 5.2k
2 个回答

额,不是这么用的
你应该是想 s.a 这种调用
s+'.'+key 有几个问题:

1 . s 被转为字符串 [object Object]
2 . 你传入的 key 是变量 a 不是字符串 'a'
3 . 就算传入字符串 'a',最后结果是 [object Object].a
4 . 就算s使用字符串 's.a' 最后这个只是一个字符串,需要eval('s.a')来编译一下

s['a']//正常获取

var key = 'a'
s[key]//使用变量

function show(key){
    $.each(s[key], function(i,e) {
          ....
    });
}
show('a')

点语法有两种形式:

1.obj.name
2.obj['name']

您这个问题是在$.each()中出现的,控制台点击进入,报错在each方法中
希望有所帮助

推荐问题
宣传栏