2012-06-17 110 views
0

我有問題的JavaScript代碼。我正在使用谷歌地圖,我正在從服務器以json格式收集數據槽。當我在某些瀏覽器中的控制檯窗口中檢查數據時,我可以看到數據實際上即將到來。JavaScript未更新變量

我的問題是,變量只讀一次,我顯示它的值在文本框中。現在當我不斷收到數據變量總是一樣的,有什麼想法爲什麼?而且我100%確定我獲得了不同的價值觀。

下面是代碼:

function updateTrucks() { 
    $.ajax({ 
     url: "get_data.php", 
     cache: false, 
     dataType: 'json', 
     data: {}, 
     error: function(jqxhr, textStatus, errorThrown) { 
      alert("Error: " + textStatus + " " + errorThrown); 
     }, 
     success: function(data) { 
     for(var i = 0; i < data.results.length; i++) { 
      if(trucks.hasOwnProperty(data.results[i].id)) { 
       // update position 
       trucks[data.results[i].id].setPosition(new google.maps.LatLng(
       parseFloat(data.results[i].lat), 
       parseFloat(data.results[i].lng))); 
       trucks[data.results[i].id].speed = data.results[i].speed; 
      } 
      else { 
       // code 
      } 

      google.maps.event.addListener(trucks[data.results[i].id], 'position_changed', function() { 
       if(typeof tracked !== "undefined") { 
        if(this.id == tracked.id) { 
         map.panTo(this.getPosition()); 
         $("#speed").val(this.speed); 
        } 
       } 
      });  

這條線不能正常工作$("#speed").val(this.speed);

+0

是安全的假設,該代碼塊不完整? –

回答

0

我認爲你需要改變以便你在更新位置命令,所以position_changed發射時速度屬性將被刷新:

if(trucks.hasOwnProperty(data.results[i].id)) { 
       trucks[data.results[i].id].speed = data.results[i].speed; 
       // update position 
       trucks[data.results[i].id].setPosition(new google.maps.LatLng(
        parseFloat(data.results[i].lat), 
        parseFloat(data.results[i].lng))); 
       } 
+0

就是這樣:)謝謝 –

0

在javascript中,你可以做

document.getElementById("clicks").innerHTML = stuff; 

JavaScript中的變量被稱爲stuff和HTML的變種被稱爲clicks