2012-06-01 3 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

Ah. 이것은 트릭을했다! 나는 여전히 JS/jQuery 세계에 대해 할 수있는 모든 것을 배우려고 노력하고 있으므로 도움의 손길에 감사드립니다. :) – josephndenton

+0

@josephndenton 예, totDistance는 IE에서 적어도 재정의 할 때까지 요소가됩니다. –

+0

@josephndenton 도와 주시겠습니까? 그리고 Stack Overflow에 오신 것을 환영합니다. 이 답변 또는 다른 사람이 문제를 해결 한 경우이를 수락 한 것으로 표시하십시오. – jnrbsn

0

나는 당신이 직면하고있는 것은 그 totDistance는이 ID를 가진 일치하는 요소를 (이 때입니다 document.getElementById('totDistance')로 평가 받고있다 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  
}