2

我正在使用 ASP.NET MVC 4,我有一个这样的 DIV:

<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事件吗?

谢谢大家!

4

3 回答 3

11

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

您可以对documentor执行此操作body,或者在 . 之后立即调用脚本的不太理想的方式<div>

<div id="map_canvas" style="width: 500px; height: 400px;"></div>
<script>
 mapAddress();
</script>
于 2012-10-23T21:38:56.390 回答
3

onload 仅受以下 HTML 标签支持

<body>, <frame>, <frameset>, <iframe>, <img>, 
<input type="image">, <link>, <script>, <style>
于 2012-10-23T21:57:29.633 回答
1

不要将onload处理程序附加到<div>元素,只是<body>元素。

将其直接放在全局对象 ( window) 上的好地方:

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

onload处理程序放在 a<div>上没有意义,因为元素在解析并添加到 DOM 树后立即“加载”。

于 2012-10-23T21:38:28.680 回答