2016-12-30 100 views
0

我想將Google地理編碼服務添加到網頁,並遇到一些JavaScript麻煩。當我添加下面的代碼沒有jQuery時,我收到空引用錯誤,但仍可以偶爾使服務工作。根據我正在閱讀的內容,它是在元素加載之前運行的JS,我可以將此JS包裝到一個jQuery函數中來解決問題。但是,當我添加我的代碼如下,這是錯誤仍然彈出,我不能讓服務運行。我的jQuery語法中是否有不正確的東西?我對JS很新。謝謝。帶Google Maps API的jQuery文檔就緒函數語法

「的JavaScript運行時錯誤:無法獲取的未定義或空引用財產‘的addListener’」

<script type="text/javascript"> 
    $(document).ready(function(){ 
     google.maps.event.addDomListener(window, 'load', initialize); 
     function initialize() { 
      var autocomplete = new google.maps.places.Autocomplete(document.getElementById('PostalCodeID')); 
      google.maps.evenet.addListener(autocomplete, 'place_changed', function() { 
       var places = autocomplete.getplace(); 
       var location = "<b>Location:</b>" + places.formatted_address + "<br/>"; 
       location += "<b>Latitude:</b>" + places.geometry.location.A + "<br/>"; 
       location += "<b>Longitude:</b>" + places.geometry.location.F + "<br/>"; 
       document.getElementById('lblresult').innerHTML = location 
      }); 
     }; 
     }); 

</script> 
+0

如果您將代碼放入「ready」處理程序(反之亦然),我認爲您不需要安裝「加載」偵聽程序。你只需要做一個。 – Pointy

+0

也應該是'google.maps.event'而不是'evenet'。這就是錯誤告訴你的。 – Pointy

+0

我相信我需要它來加載服務。當我將它註釋掉並運行代碼時,它看起來不像服務可用。我說,因爲當它沒有被註釋掉時,文本框顯示'請輸入一個位置'。我做了一個似乎擺脫JS運行時錯誤的更新,但現在服務沒有返回地址。幾乎就像我需要添加一個事件。感謝您的答覆。 – AndrewC10

回答

0

由於尖「中指出」(對不起,不能幫助我自己),你正在使用onLoad和onReady處理程序。一個(但肯定是onReady)會處理任何類型的「頁面尚未加載其內容」問題。但是,儘管兩者都存在,但您仍然遇到錯誤。

一個可能的罪魁禍首(Pounty也指出)是你的拼寫錯誤eventevenet。如果修復後仍然出現錯誤,那麼當您的代碼觸發時,您可能還有其他元素缺失。我看到的最可能的罪魁禍首是你的元素ID爲「PostalCodeID」。

還有一些事情可以幫助縮小問題的範圍。例如,你的錯誤的堆棧跟蹤應該包含一個指向你的代碼行的指針;如果你看看哪一行應該有助於確定你想要做什麼,瀏覽器認爲是不可能的。

一旦找到導致問題的線路,您可以在它之前添加一條debugger語句,然後使用瀏覽器的調試器來查看發生了什麼。您還可以運行document.getElementById('PostalCodeID')之類的代碼,以確認該元素確實在該時間點上不在頁面上。

相關問題