javascript - 遍历javascript对象IE8

标签 javascript arrays internet-explorer object for-loop

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"
    }
}
];

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

for(var i in data) {
    var imgHeight = data[i].th.height;
}

我收到一条错误消息:“无法获取“高度”的属性,引用为空或未定义”

(我从法语翻译了消息:Impossible d’obtenir la propriété « height » d’une référence null ou non définie)

我做错了什么?

最佳答案

访问数组元素可以像这样更语义化地完成:

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

for..in循环旨在与基于键的对象一起使用。

注意:您的对象中还缺少结束引号:

th: Object {
   width: 107,
   height: 80, 
   img: "src /* NEED A CLOSING " HERE */
}

关于javascript - 遍历javascript对象IE8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15522237/

相关文章:

javascript - 你如何在 IE9 中点击透明的 PNG?

javascript - 获取窗口未在 ReactJs 上定义

javascript - JavaScript 中的 HTML "onclick"事件(在表中)

javascript - HTML Canvas - 动态更改文本

php - 从分层表创建一个平面数组

security - IE 11 第一方 session cookie 在 iframe 中丢失

javascript - 检测 url/链接并用 img 标签替换图像并用 href 替换链接

php - 比较对象数组

c - 区分嵌套在 union 中且具有 C 中共同属性的两个不同结构

javascript - 使用输入类型 ="file"字段上传文件,其中 .change() 事件并不总是在 IE 和 Chrome 中触发