2012-04-19 59 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操作。