2012-06-01 99 views
0

JS/jQuery有點新鮮,但我試圖將隱藏字段的值更改爲JSON對象特定值的總和,因爲它是循環的。這裏是我有:jQuery .val()問題

  <form> 
      <input id="totDistance" type="hidden" value="" /> 
     </form> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$.ajax({ 
    type: "POST", 
    url: "loadPolys.php", 
    dataType: "json", 
    success: function(returnedJson){ 

    jQuery.each(returnedJson, function(i, val) { 

    var curType = val.type; 
    var curAlias = val.alias; 
    var curDistance = val.distance; 
    totDistance += parseInt(curDistance, 10); 
    $('#totDistance').val(totDistance); 
    }); 

}, 
    error: function(){ 
    alert("oh no"); 
    } 

}); 
}); 
</script> 

儘管輸入字段保持被設置爲「[object HTMLInputElement] 1734」。要添加的值是17和34,所以數據正在被拖動...並且totDistance設置爲51 ...我做錯了什麼? noobie

+1

凡'totDistance'定義? –

+0

這解決了這個問題。一開始我在所有函數之外定義了totDistance,但是在ajax回調函數內部定義了它,這是奇蹟。 – josephndenton

+0

@KevinB我認爲這是特定於IE的問題..其中'totDistance'等同於'docuement.getElementById('totDistance')' –

回答

1

嘗試定義totDistance變量:

... 
success: function(returnedJson){ 

var totDistance = 0; 

jQuery.each(returnedJson, function(i, val) { 
... 
+0

啊。這個竅門!我仍然在努力學習關於JS/jQuery世界的一切,所以我非常感謝幫助。 :) – josephndenton

+0

@josephndenton是的,在您重新定義它之前,totDistance至少是IE中的元素。 –

+0

@josephndenton樂於幫忙,歡迎來到Stack Overflow。如果此答案或任何其他人解決了您的問題,請將其標記爲已接受。 – jnrbsn

0

我認爲你面對的是它totDistance是越來越評估爲document.getElementById('totDistance')這是當它與ID的匹配元件(IE具體問題totDistance)。爲了避免這種情況..簡單地聲明var和初始化爲0

而且最好是設置隱藏元素外.each

success: function(returnedJson){  
    var totDistance = 0; //declared a var 
    jQuery.each(returnedJson, function(i, val) { 
     var curType = val.type; 
     var curAlias = val.alias; 
     var curDistance = val.distance; 
     totDistance += parseInt(curDistance, 10);  
    }); 

    $('#totDistance').val(totDistance); //Moved outside of .each  
}