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

时间:2013-02-25 14:46:24

标签: javascript arrays json internet-explorer

我正在尝试将这个数组迭代到地图上的引脚,在每个浏览器中它似乎工作正常但在IE8中我收到错误“SCRIPT5007:无法获取属性'top'的值:object is null或者未定义“如果我将顶部更改为其他内容或删除它,IE只是说左边或名称相同的事情,等等。如果有人有任何建议,他们将不胜感激。

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>');
    }


});

2 个答案:

答案 0 :(得分:3)

@Guffa是对的。关于加拿大&#39;的尾随逗号。行无效。

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

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

答案 1 :(得分:0)

IE 中如果您在最后 JSON对象之后给出逗号,则在 IE6,IE7,IE8中给出错误。

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