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 数组包含高程数据 ok)

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