2

我有一个正在开发的网站,它使用Google Maps API V3加载多个定位制作者。一切工作除了在IE7/8在我的循环遍历一个数组失败,因为以下错误:IE7/8 javascript“SCRIPT5007:无法获取媒体资源的价值”

SCRIPT5007: Unable to get value of the property '5': object is null or undefined 

我已经通过在计算器上所有类似的问题看,并不能找到任何解决方案。

所以我试图从一个对象数组中访问数据(我也尝试了一个嵌套数组,但同样的错误发生)。我的数组如下。我也尝试删除html对象,以防造成问题,但没有改变 - IE7/8仍然无法获得对象值。

var sites = [ 
    {title: "Hermitage Medical Clinic", latitude: 53.3593139774, longitude: -6.40494071541, enumerator: 1, html: "<div class=\"find_a_surgeon_info_inner\"><h4 style=\"margin: 0; padding: 0;\">Hermitage Medical Clinic</h4><p>Old Lucan Road, Dublin 20</p><p><a href=\"http://devel.pixelapes.com/iaps.ie/location/hermitage-medical-clinic/\">View hospital details</a></p></div>", iconTerm: "hospital" } 
     ]; 

这是我的功能,这是试图访问数据:

 function setMarkers(map, sites) { 

      for (var i = 0; i < sites.length; i++) { 
       // var sites = markers[i]; 
       var icon = '<?php bloginfo("template_url"); ?>/images/map-icons/' + sites[i].iconTerm + '.png'; 
       var siteLatLng = new google.maps.LatLng(sites[i].latitude, sites[i].longitude); 
       var marker = new google.maps.Marker({ 
        position: siteLatLng, 
        map: map, 
        icon: icon, 
        title: sites[i].title, 
        zIndex: sites[i].enumerator, 
        html: sites[i].html 
       }); 

       var contentString = "Some content"; 

       google.maps.event.addListener(marker, "click", function() { 
        infowindow.setContent(this.html); 
        infowindow.open(map, this); 
       }); 
      } 
     } 

我也尝试下探回到刚才使用的情况下,有一个具体问题与iconTerm默认的地图标记对象,但IE7/8只是失败,试图获得下一个对象值。

下面是关于此发生的页面: http://devel.pixelapes.com/iaps.ie/surgeon/eamon-s-beausang/

奇怪的是,我还有一个地图实例,其中我不会设置与map.fitBounds界限。获取对象的值仍然失败,但在地图上分类负载(但很乱七八糟):http://devel.pixelapes.com/iaps.ie/find-a-hospital-or-clinic/

我曾试图消除单一外科医生页面上的fitBounds功能,但是映射仍然因为它在不加载部分“查找医院”​​地图。

有关如何解决此问题的任何想法?

回答

7

siteslatlngs的最后一项后面有尾随逗号,将它们删除,IE不喜欢数组/对象中的尾随逗号。

+0

谢谢莫尔博士!我完全没有发现,这让我发疯了!只有拖尾逗号的原因是因为我从PHP循环中生成了对象,并忘记了对该数组进行计数并在最后一个对象上删除了尾随逗号。 – alexleonard

+0

可悲的是,它还没有完全解决我的IE7/8的困境,因为我仍然无法让标记出现 - 但这绝对是我修复的问题之一。 我应该发布一个关于标记不显示的新问题吗? – alexleonard

+0

呵呵,我刚刚解决了标记消失的问题......一个通用的CSS img规则影响了它们的边距和填充......我是一个白痴(但随后IE的开发工具不会让你真的看看地图里面,所以我不明白发生了什么) – alexleonard

0

我认为您的问题可能是IE不喜欢您为sites阵列成员选择的一个(或多个)属性名称。我建议改变你的第一个代码部分到这个:

var sites = [{ 
     "title": "Hermitage Medical Clinic", 
     "latitude": 53.3593139774, 
     "longitude": -6.40494071541, 
     "enumerator": 1, 
     "html": "<div class=\"find_a_surgeon_info_inner\"><h4 style=\"margin: 0; padding: 0;\">Hermitage Medical Clinic</h4><p>Old Lucan Road, Dublin 20</p><p><a href=\"http://devel.pixelapes.com/iaps.ie/location/hermitage-medical-clinic/\">View hospital details</a></p></div>", 
     "iconTerm": "hospital" 
}]; 
+0

你现在实际上是正确的,我回头看你的代码,但莫勒博士的回答定义了实际的缺陷。只是引起问题的尾随逗号,但引号中的属性名称没有任何区别。 – alexleonard