2013-10-09 98 views
0

我想在我的JavaScript中使用計時器來每隔5秒從cshtml中的其他對象輪詢某些數據,並將其更新到javascript中的函數中。函數在javascript中未定義

我已經探索了用下面的代碼,但它似乎扔初始化的錯誤是不確定

function initialize() { 

    var mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("googleMap") 
     , mapProp); 


} 

$(document).ready(function() { 
    initialize(); 
}); 
window.setInterval(function() { 
    /// call your function here 
    initialize(); 
}, 5000); 

然而,這工作完全正常

function initialize() { 

    var mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("googleMap") 
     , mapProp); 


} 

$(document).ready(function() { 
    initialize(); 
}); 

因爲我想使變量全球這樣我可以更新地圖上每5秒鐘,我試圖使它成爲一個全局變量的焦點

var mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

但是,似乎腳本不斷給我一個錯誤的谷歌是未定義的。

無論如何,我可以解決我的問題。

例如,我想每5秒更新一次google.maps.LatLng(51.508742,-0.120850)中的參數。

+0

如果你使用'var'關鍵字在函數內部則是*不*全局變量,它的作用範圍包括該功能。 –

+0

沒有什麼全局變量 - 它設置局部變量 - 全局變量是鍵入**沒有var **或顯式爲一個窗口屬性=>'window.myVariable =「東西」;' –

+3

您是否包含腳本? –

回答

1

這裏是工作的代碼,

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false"> 
     </script> 
     <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script> 
     <script> 
      var mapProp; 
      $(document).ready(function(){initialize();}) 
      function initialize() 
      { 
       mapProp = changeMapProp(); 
       var map=new google.maps.Map(document.getElementById("googleMap") 
       ,mapProp); 
      } 
      function changeMapProp() { 
       mapProp = { 
        center:new google.maps.LatLng(52.508742,-0.120850), 
        zoom:5, 
        mapTypeId:google.maps.MapTypeId.ROADMAP 
       }; 
       return mapProp; 
      } 
      window.setInterval(function() { 
       /// call your function here 
       initialize(); 
      }, 5000); 

     </script> 
    </head> 

    <body> 
     <div id="googleMap" style="width:500px;height:380px;"></div> 

    </body> 
</html> 
1

嘗試:

var mapProp; 
var map; 

var initialize = function() { 

    mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("googleMap") 
     , mapProp); 

} 

$(document).ready(function() { 

    setTimeout(initialize, 5000); 

}); 
+0

調試器在window.setinterval函數初始化時顯示錯誤 – aceminer

+0

現在你可以試試,回答更新。 – Salim

1

你不能讓var mapProp全球,因爲它會觸發center: new google.maps...直去,你google變量不會到位,但(這就是爲什麼你會得到谷歌未定義)。

關於初始化定義,把你的setInterval裏面你$(document).ready功能。