0

それぞれ標高タグを含む約 1180 のトラックポイントを持つ gpx xml ドキュメントを読んでいます。長さを取得することはできますが、合計上昇を計算する if ループで後で使用するために渡すことはできません。

var elevs = [];
var $l = 0;
      $.ajax({
          type: "GET",
          url: "../gpx/27-Mar-13slow.gpx",
          dataType: "xml",
                success: function(xml) {
                    $(xml).find('trkseg').each(function(){
                        $l=$(this).find("trkpt").length;
                        $(xml).find('trkpt').each(function(){
                            elevs.push(+$(this).find('ele').text());
                        });
                        $('#holder').append('<div>' + $l + '</div>');
                        //fn();
                    });
                }
      }); 

つまり$('#holder').append('<div>' + $l + '</div>');、トラックポイントの総数は正しく表示されますが、関数の外に移動すると表示されません。グローバル変数であると想定しているものは$l、トラックポイントの長さに変わりません。誰かが理由を教えてもらえますか? (elevs 配列には標高データが含まれています)

4

1 に答える 1

0

次のように成功関数を変更してみてください。

success: function (xml) {
    var xmlDoc = $.parseXML(xml);
    var $xml = $(xmlDoc),
    var $trkseg = $xml.find("trkseg");
    $trkseg.each(function () {
        $l = $(this).find("trkpt").length;
        $(xml).find('trkpt').each(function () {
            elevs.push(+$(this).find('ele').text());
        });
        $('#holder').append('<div>' + $l + '</div>');
        //fn();
    });
}
于 2013-04-07T19:22:05.093 に答える