2016-06-13 25 views
0

こんにちは私は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) { 
    } 
    }); 
} 
+0

どこで、どのように、あなたのHTMLにスクリプトをロードしていますか? –

答えて

1

あなたはjQueryのを使用しているので、なぜだけでなく、DOM対応の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/

-1
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();  
} 

everthingがあなたの関数にコールする必要が読み込まれた後)(window.onload内

をすべてを置きます。

+0

つまり、 'initMap'関数は' window.onload'関数の内部でしか利用できません。さらに、彼らはすでに 'body onload =" initMap() "'を使ってリスナーを追加しています。 –

1

使用このスニペット:

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

または右、これは延期HTML5を使用します。

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

私はすべてをwindow.onloadイベントに入れようとしましたが、不幸にもinitMapは呼び出されません。私がIEでデバッガに着いたら、手動でコンソールにこれを入力するとき、initMap()エラーは未定義です。このページを互換ビュー設定に追加すると正しく動作します。 –

+0

私は、私のjQueryであるjavascript変数を作成するのではなく、スクリプトソースにdeferと入力するだけでよいということを、あなたが言っていることがわかりません。 –

関連する問題