我试图让下面的代码工作(console.log 只是为了看看发生了什么)。我已经在任何函数之外声明了全局变量,但它似乎只是在函数内部更新它们。
<script type="text/javascript">
var map;
var geocoder;
var address;
function initialize(){
geocoder = new google.maps.Geocoder();
var mapOptions = {
center:new google.maps.LatLng(-76.146294, 43.052081),
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 15,
streetViewControl: false
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
loadAddress();
console.log("initialize function: " + address); //this correctly returns the updated address
}
function loadAddress(){
var property = <?php echo json_encode(urlencode($Residential['ReAddress'])); ?>;
var zipCode = <?php echo json_encode($Residential['zipCode']); ?>;
address = property + "," + zipCode;
geocoder.geocode({'address': address}, function(result, status){
if(status === "OK"){
map.setCenter(result[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: result[0].geometry.location
});
}
else {
alert("Failed to geocode: " + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
以上工作正常 - “地址”变量正确更新,当我在 initialize() 函数结束时将其记录到控制台时,它会正确显示。问题是如果我尝试将相同的变量记录到页面下方的控制台:
<script type="text/javascript">
console.log("further down page: " + address); //this comes back as 'undefined'
</script>
当我尝试这样做时,我只是得到'未定义'。我对javascript很陌生,但我的理解是,如果变量在任何函数之外声明,它就是一个全局变量,它应该可以在任何地方访问。我觉得我错过了一些非常明显的东西,但我不知道是什么(我花了很多时间搜索!)。
我的预感是它与在页面加载后才调用 initialize() 有关,但在页面完成加载之前试图记录“地址”。如果是这个问题,我不知道如何解决。
另外,我确信上面的代码不是最好的做事方式,但这实际上更像是一种学习体验。谢谢!