主体加载后未调用函数

function not being called after body onload

你好,我有一个 Javascript 函数 initMap();我希望通过 body onload="initMap();" 加载此函数加载页面后,我可以进入 IE 的调试器并编写 initMap();在控制台中,它仍然说这个函数是未定义的。我知道页面生命周期存在一些问题,但我不确定问题到底是什么。任何帮助将不胜感激。

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 11,
    center: {
      lat: 33.923928,
      lng: -118.245153
    }
  });
  var trafficLayer = new google.maps.TrafficLayer();
  trafficLayer.setMap(map);
}
var fancy = document.createElement('script');
fancy.src = 'scripts/jquery-1.12.1.min.js';
fancy.type = 'text/javascript';
fancy.language = "javascript";
document.head.appendChild(fancy);
fancy.onload = function() {
  $.noConflict();
  initMap()
  SetSlideIntervals()
  jQuery.ajax({
    dataType: "json",
    url: "http://dev.virtualearth.net/REST/v1/Traffic/Incidents/33.799323,-118.402795,34.045909,-118.086747?key=Aq1xeHo7y0F9fT24Yk4DlC5tEFmf_RiGLc4wj734BXZpevMgGM4uZNvk4sc3PEpD",
    data: "",
    success: function(WeatherObj) {
    }
  });
}
window.onload = function(){
function initMap() {
              var map = new google.maps.Map(document.getElementById('map'), {
                  zoom: 11,
                  center: { lat: 33.923928, lng: -118.245153 }
              });

              var trafficLayer = new google.maps.TrafficLayer();
              trafficLayer.setMap(map);
          }
          var fancy = document.createElement('script');
          fancy.src = 'scripts/jquery-1.12.1.min.js';
          fancy.type = 'text/javascript';
          fancy.language = "javascript";
          document.head.appendChild(fancy);
          fancy.onload = function () {
              $.noConflict();
              initMap()
              SetSlideIntervals()


              jQuery.ajax({
                  dataType: "json",
                  url: "http://dev.virtualearth.net/REST/v1/Traffic/Incidents/33.799323,-118.402795,34.045909,-118.086747?key=Aq1xeHo7y0F9fT24Yk4DlC5tEFmf_RiGLc4wj734BXZpevMgGM4uZNvk4sc3PEpD",
                  data: "",
                  success: function (WeatherObj) {

                  }

              });

          }

    initMap();    
 }

将所有内容放入 window.onload()

加载完所有内容后,您必须调用您的函数。

使用此代码段:

window.onload = function () {
   //all your code goes here.
}

或使用html5推迟这个:

<script src="code.js" defer></script>

既然您正在使用 jQuery,为什么不直接使用 DOM-ready jQuery 处理程序?

        <!DOCTYPE html>
    <html>
        <head>
            <title>Test stuff</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
        </head>
        <body>
            <script type="text/javascript">
                $( document ).ready(function() {
                        console.log( "ready!" );
                        function initMap() {
                            // your code here
                        }

                        initMap();
                });
            </script>
        </body>
    </html>

您可以查看该函数的完整 jQuery 文档: https://learn.jquery.com/using-jquery-core/document-ready/