0

JS / jQueryは少し新しいですが、非表示フィールドの値を、ループされているJSONオブジェクトの特定の値の合計に変更しようとしています。これが私が持っているものです:

            <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>

入力フィールドは「[objectHTMLInputElement]1734」に設定され続けますが。追加する値は17と34なので、データがプルされています...そしてtotDistanceは51に設定されています...何が間違っているのですか?ヌービー

4

2 に答える 2

1

totDistance変数を定義してみてください:

...
success: function(returnedJson){

var totDistance = 0;

jQuery.each(returnedJson, function(i, val) {
...
于 2012-06-01T19:03:30.060 に答える
0

あなたが直面しているのは、IE固有の問題であると思います。それtotDistancedocument.getElementById('totDistance')、ID(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    
}
于 2012-06-01T19:14:27.497 に答える