2012-10-23 278 views
2

我使用ASP.NET MVC 4 JavaScript方法,我有这样一个DIV:DIV onload事件不触发

<div id="map_canvas" style="width: 500px; height: 400px;" onload="mapAddress();"></div> 

然后,在JavaScript文件(,我已经验证加载)被mapAddress功能:

function mapAddress() { 
    //In this case it gets the address from an element on the page, but obviously you could just pass it to the method instead 
    var address = $("#Address").val(); 

    geocoder.geocode({ 'address': address }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      var myLatLng = results[0].geometry.location.LatLng; 

      var mapOptions = { 
       center: myLatLng, 
       zoom: 15, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

      var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

      var marker = new google.maps.Marker({ 
       position: myLatLng, 
       map: map, 
       title: $("#Name").val() + " Location" 
      }); 
     } 
     else { 
      alert("The location of the event could not be mapped because: " + status); 
     } 
    }); 
} 

但是,无论什么原因,它不被称为。我误解了onload事件吗?

谢谢大家!

回答

9

onload将不会触发<div>元素。

您可以对documentbody执行此操作,或者在<div>之后立即调用脚本。

<div id="map_canvas" style="width: 500px; height: 400px;"></div> 
<script> 
mapAddress(); 
</script> 
+2

谢谢,这个工作就像一个魅力。对不起,我的无知!有时候你想知道,你已经做了十多年,并且仍然在这里和那里想念这样的事情。只是证明我们并不完美。 –

1

请勿将onload处理程序添加到<div>元素,只需要<body>元素。

一个好地方,把这个直接是全局对象(window)上:

window.onload = function() { 
    // your code 
}; 

<div>放置一个onload处理程序没有任何意义,因为该元素是“装”的权利是后解析并添加到DOM树中。