2013-02-19 3 views
1
<!DOCTYPE html> 
<html lang="en"> 
<head><meta charset="utf-8" /> 
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&region=vi&language=vi">  
    </script> 

    <script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
    <script type="text/javascript"> 
     var map; 
    </script> 
    <style type="text/css"> 
     html { 
      height: 100%; 
     } 

     body { 
      height: 100%; 
      margin: 0; 
      padding: 0; 
     } 
    </style> 
</head> 

<body onload="initialize()"> 
    <div id="map_canvas" style="width: 100%; height: 100%"></div> 

    <script type="text/javascript"> 
     function initialize() { 
      var mapOptions = { 
       center: new google.maps.LatLng(10.79, 826.694), 
       zoom: 13, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      map = new google.maps.Map(document.getElementById("map_canvas"), 
       mapOptions); 
     } 
    </script>  

    <script>    
     alert(map); 
    </script> 

</body> 
</html> 

неопределенными Несколько моих функций нужно использовать переменную map, однако, я продолжаю получать предупреждения, что жалуетесь map переменная неопознанными. Как я могу сделать браузер помнить, что карта была определена на map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); СпасибоОпределяется глобальная переменная в JavaScript становится снова

ответ

1

map Виль undefined, когда это alert() работает. Это связано с тем, что alert() будет выполняться до вашего метода initialize().

теги в теле будут выполняться немедленно, но функция onload, которую вы указали, будет выполняться до тех пор, пока не будет проанализировано и выполнено все содержимое тега тега (и скрипты внутри него).

Изначально вызывается initialize(), эта настройка будет работать так, как вы хотите, и глобальная переменная map будет доступна везде.

+0

Да, есть такие важные знания, как я, но я не знал. Спасибо –

+0

Так в чем разница между '' и ' .. много вещей здесь ... '? –

+0

@MinhTriet Если тег скрипта действительно является последним в теге тела, очень мало. –

2

Поскольку

<script>    
    alert(map); 
</script> 

вызывается перед

onload="initialize()" 

называется.

+0

Да, есть некоторые важные знания, подобные этому, но я не знал. Спасибо –

3

Это потому, что вы вызываете функцию initialize() onLoad, то есть переменная map назначается onLoad. Но сценарий

<script>    
    alert(map); 
</script> 

вызывается перед onLoad запускается

попробовать:

<script type="text/javascript"> 
    function initialize() { 
     var mapOptions = { 
      center: new google.maps.LatLng(10.79, 826.694), 
      zoom: 13, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById("map_canvas"), 
      mapOptions); 


     alert(map); 
    } 

</script> 
Смежные вопросы