Json对象属性仅在IE8中未定义

Json object property undefined in IE8 only

本文关键字:IE8 未定义 对象 属性 Json      更新时间:2023-09-26

我正在尝试迭代这个数组,以固定在地图上,在每个浏览器中,它似乎都能正常工作,但在IE8中,我得到了错误"SCRIPT5007:无法获取属性‘top’的值:object为null或未定义"。如果我将top更改为其他内容或删除它,IE只会对left或name等说同样的话。如果有人有任何建议,我们将不胜感激。

jQuery(document).ready(function(){
    var pins =  [
            { "name":"Mexico", "top":"154" , "left":"176", "imageFile":"Mexico.jpg", "soundMP3File":"Mexico_GMartinez_1.mp3", "soundOGGFile":"Mexico_GMartinez_1.ogg"},
            { "name":"Chile", "top":"261" , "left":"246", "imageFile":"Chile.jpg", "soundMP3File":"Chile_MVelasquez_1.mp3", "soundOGGFile":"Chile_MVelasquez_1.ogg"},
            { "name":"Trinidad and Tobago", "top":"182" , "left":"242", "imageFile":"TrinidadTobago.jpg", "soundMP3File":"Trinidad-Tobago_SHarris_1.mp3", "soundOGGFile":"Trinidad-Tobago_SHarris_1.ogg"},
            { "name":"Columbia", "top":"209" , "left":"227", "imageFile":"Columbia.jpg", "soundMP3File":"Colombia_JGordon_2.mp3", "soundOGGFile":"Colombia_JGordon_2.ogg"},
            { "name":"Canada", "top":"86" , "left":"208", "imageFile":"Canada.jpg", "soundMP3File":"Canada_KBretzer_1.mp3", "soundOGGFile":"Canada_KBretzer_1.ogg"},            
            ];
for(var i = 0; i < pins.length; i++)
    {
        jQuery('#map #pins-container').append('<a href="#" class="pin" style="top: ' + pins[i].top + 'px; left:' + pins[i].left + 'px;" pinindex="' + i + '" name="' + pins[i].name + '"></a>');
    }

});

@Guffa是对的。"Canada"行的尾部逗号无效。

IE是唯一一个真正会抱怨它的浏览器,但它在任何地方都是技术无效的。

为了避免类似的问题,您应该使用JSHint这样的工具,它将验证您的Javascript代码是否编码了常见错误,包括尾部逗号错误。

IE中如果在最后一个JSON对象后使用逗号,这是IE6、IE7、IE8中的错误。

所以,永远记住这一点当你写Javascript时,JSON