2012-06-17 81 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