我试图让下面的代码工作(console.log只是为了看看发生了什么)。我已经在任何函数之外声明了全局变量,但它似乎只是在函数内更新它们。Javascript全局变量不在任何函数之外更新
<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>
上面的正常工作 - 在“地址”变量更新正确的,当我在初始化()函数到底登录到控制台,它显示正常。问题是,如果我试图在同一个变量登录到控制台进一步下跌的页面:
<script type="text/javascript">
console.log("further down page: " + address); //this comes back as 'undefined'
</script>
当我尝试这样做,我只是得到“未定义”。我对javascript非常陌生,但我的理解是,如果变量是在任何函数之外声明的,那么它是一个全局变量,它应该可以在任何地方访问。我觉得我错过了一些非常明显的东西,但我不知道是什么(而且我花了不少时间搜索!)。
我的直觉是,它必须与initialize()不会被调用,直到页面加载后,但'地址'试图在页面加载完成之前被记录。如果这是问题,我不知道如何解决它。
另外,我确定上面的代码并不是做事的最佳方式,但这实际上更像是一种学习体验。谢谢!
我觉得必须是这个问题,但由于某种原因,解决方案没有跳出来,但是你做了什么非常合理 - 谢谢! – falc2