2012-04-19 43 views
0
<!DOCTYPE html> 
<html> 

    <head> 
     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
     <title>Google Maps JavaScript API v3 Example: Reverse Geocoding</title> 
     <link 
     href="https://developers.google.com/maps/documentation/javascript/examples/default.css" 
     rel="stylesheet" type="text/css" /> 
     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> 
     <script type="text/javascript"> 
      var geocoder; 

      var variablejs; 

      geocoder = new google.maps.Geocoder(); 

      var input = "41.021355,-96.020508"; 
      var latlngStr = input.split(",", 2); 
      var lat = parseFloat(latlngStr[0]); 
      var lng = parseFloat(latlngStr[1]); 
      var latlng = new google.maps.LatLng(lat, lng); 

      geocoder.geocode({ 
       'latLng': latlng 
      }, function (results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        if (results[0]) { 
         variablejs = results[0].formatted_address; * * //document.write(variablejs); Not working** 
         * 
         //window.location.href = "http://localhost/test2.php?ad="+ variablejs; Working* 
        } else { 
         alert("No results found"); 
        } 
       } else { 
        alert("Geocoder failed due to: " + status); 
       } 
      }); * * document.write(variablejs); * * //writes undefined variable (not working) 
     </script> 
    </head> 

    <body></body> 

</html> 

的部分(//document.write(variablejs);不工作),不會寫變量 「variablejs」,但是當我使用的方法(// window.location.href =「http://localhost/test2.php?ad =」+ variablejs;工作),它會寫入url並轉發傳遞變量的頁面作爲參數。我想要做的是在同一個HTML的主體中打印該變量。 我試圖首先初始化變量,然後寫入正文,但它看起來像該部分是不可訪問像全局變量或類似的東西。請幫忙。寫JavaScript變量

+0

change var variablejs; to var variablejs =「」;你應該很好去 – Satya 2012-04-19 07:09:38

+0

爲什麼不把這樣的東西放進去:

,並將document.write(something)改爲document.getElementById('output')。innerHTML = something ;? – 2012-04-19 07:23:04

回答

3

文檔加載完成後,不能使用document.write而不覆蓋所有內容。您將需要操作DOM,例如document.body.innerText=variablejs;。但我推薦

var d = document.createElement("div"); 
d.appendChild(document.createTextNode(variablejs)); 
document.body.appendChild(d); 
+0

您可以指出,在OP代碼中使用'document.write()'之前觸發'onload'事件嗎? – Teemu 2012-04-19 07:45:28

+0

沒有地方,但我想geocoder.geocode(PARAMS,回調)使用XMLHttpRequest - 通常比DOMready慢。 – Bergi 2012-04-19 08:09:02

+0

哇......這也解釋了爲什麼OP在最後一行得到「未定義的變量」 - 錯誤。 – Teemu 2012-04-19 08:18:48

1

您正在爲傳遞給geocoder.geocode()的回調函數中的variablejs賦值。這意味着您正在嘗試訪問並在回調被調用之前寫入它,因此您將看不到任何值。

用Firebug或類似的調試將有助於在這些情況下。

此外,您不能在文檔加載後使用docuemnt.write,您需要改爲執行一些DOM操作。