循环遍历javascript对象IE8

Alu*_*ard 2 javascript arrays internet-explorer for-loop object

data 是一个Json数据的数组每个对象的结构是:

var data = [
{
    id: 0, 
    img: "image_src", 
    width: 107, 
    height: 80, 
    shadowBoxLink: "....",
    th: {
        width: 107,
        height: 70, 
        img: "src"
    }
},
{
    id: 1, 
    img: "image_src", 
    width: 107, 
    height: 80, 
    shadowBoxLink: "....",
    th: {
        width: 107,
        height: 80, 
        img: "src"
    }
}
];
Run Code Online (Sandbox Code Playgroud)

当我尝试在循环中访问数组时(仅在IE8,IE7中发生):

for(var i in data) {
    var imgHeight = data[i].th.height;
}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:"无法获取"height"属性,引用为null或未定义"

(我翻译了法语的消息:Impossible d'obtenirlapropriété«height»d'uneréférencenullounondéfinie)

我究竟做错了什么?

Chr*_*ris 8

访问数组元素可以在语义上更加完成,如下所示:

for(var i = 0, n = data.length; i < n; i ++) {
    var imgHeight = data[i].th.height;
    ...
}
Run Code Online (Sandbox Code Playgroud)

for..in 循环意味着与基于键的对象一起使用.

注意:您的对象中也有一个缺少的结束引号:

th: Object {
   width: 107,
   height: 80, 
   img: "src /* NEED A CLOSING " HERE */
}
Run Code Online (Sandbox Code Playgroud)