
本文档将指导你如何使用 jQuery 从 JSON 文件中提取数据,并动态计算总距离,最终将结果显示在网页的表格中。我们将通过循环遍历 JSON 数据,累加距离值,并将总距离更新到指定的 HTML 元素中,提供代码示例和详细步骤,帮助你理解和应用该技术。
本教程将演示如何使用 jQuery 从 JSON 文件中提取数据,并计算表格中显示的五个活动距离的总和。
首先,确保你的 HTML 结构包含用于显示数据的表格,并且包含用于显示总距离的元素,例如 span 或 div。以下是一个基本的 HTML 结构示例:
<div class="strava-widget">
  <table class="strava-stats">
    <tr>
      <td class="heading" colspan="1">Date</td>
      <td class="heading" colspan="1">Type</td>
      <td class="heading" colspan="1">Title</td>
      <td class="heading" colspan="1">Distance</td>
      <td class="heading" colspan="1">Height Gain</td>
      <td class="heading" colspan="1">Moving Time</td>
      <td class="heading" colspan="1">Time/Km</td>
    </tr>
    <tr>
      <td><div id="start_date_local_1"></div></td>
      <td><div id="activity1type"></div></td>
      <td><div id="activity1name"></div></td>
      <td><div><span id="activity1distance"></span> Km</div></td>
      <td><div><span id="elevation1"></span>m</div></td>
      <td><div id="moving_time_1"></div></td>
      <td><div id="time_km_1"></div></td>
    </tr>
    <!-- 其他活动行 -->
    <tr>
      <td><div>5-day totals</div></td>
      <td><div>-</div></td>
      <td><div>-</div></td>
      <td><div><span id="activitytotaldistance"></span>Km</div></td>
      <td><div><span id="totalelevation"></span>m</div></td>
      <td><div>-</div></td>
      <td><div>-</div></td>
    </tr>
  </table>
</div>注意 activitytotaldistance 这个 span 元素,我们将在这里显示计算得到的总距离。
 
                        Easily find JSON paths within JSON objects using our intuitive Json Path Finder
 30
30
                             
                    接下来,我们将使用 jQuery 来获取 JSON 数据,循环遍历数据,并将距离值累加起来。
function toTime(seconds) {
  var date = new Date(null);
  date.setSeconds(seconds);
  return date.toISOString().substr(11, 8);
}
$(function() {
  $.get('/running/strava_activities.json', function(data) {
    console.log(data);
    let aggregate = 0; // 初始化总距离
    for (let i = 0; i < 5; i++) {
      $("#start_date_local_" + (i + 1)).html((data[i].start_date_local).slice(0, 10));
      $("#activity" + (i + 1) + "type").html(data[i].type);
      $("#activity" + (i + 1) + "name").html(data[i].name);
      $("#activity" + (i + 1) + "distance").html(((data[i].distance) / 1000).toFixed(3));
      $("#elevation" + (i + 1)).html(data[i].total_elevation_gain);
      $("#moving_time_" + (i + 1)).html(toTime(data[i].moving_time));
      if (data[i].distance > 0) {
        $("#time_km_" + (i + 1)).html(toTime(((data[i].moving_time) / ((data[i].distance) / 1000))).slice(3));
      }
      aggregate += Number(data[i].distance); // 累加距离
    }
    // 将总距离显示在页面上
    $("#activitytotaldistance").html((aggregate / 1000).toFixed(3));
  });
});代码解释:
<!DOCTYPE html>
<html>
<head>
  <title>Strava Activities</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <style>
    .strava-stats {
      width: 100%;
      border-collapse: collapse;
    }
    .strava-stats td, .strava-stats th {
      border: 1px solid #ddd;
      padding: 8px;
      text-align: left;
    }
    .strava-stats th {
      background-color: #f2f2f2;
    }
  </style>
</head>
<body>
<div class="strava-widget">
  <table class="strava-stats">
    <tr></tr>
    <tr>
      <td class="heading" colspan="1">Date</td>
      <td class="heading" colspan="1">Type</td>
      <td class="heading" colspan="1">Title</td>
      <td class="heading" colspan="1">Distance</td>
      <td class="heading" colspan="1">Height Gain</td>
      <td class="heading" colspan="1">Moving Time</td>
      <td class="heading" colspan="1">Time/Km</td>
    </tr>
    <tr>
      <td><div id="start_date_local_1"></div></td>
      <td><div id="activity1type"></div></td>
      <td><div id="activity1name"></div></td>
      <td><div><span id="activity1distance"></span> Km</div></td>
      <td><div><span id="elevation1"></span>m</div></td>
      <td><div id="moving_time_1"></div></td>
      <td><div id="time_km_1"></div></td>
    </tr>
    <tr>
      <td><div id="start_date_local_2"></div></td>
      <td><div id="activity2type"></div></td>
      <td><div id="activity2name"></div></td>
      <td><div><span id="activity2distance"></span> Km</div></td>
      <td><div><span id="elevation2"></span>m</div></td>
      <td><div id="moving_time_2"></div></td>
      <td><div id="time_km_2"></div></td>
    </tr>
    <tr>
      <td><div id="start_date_local_3"></div></td>
      <td><div id="activity3type"></div></td>
      <td><div id="activity3name"></div></td>
      <td><div><span id="activity3distance"></span> Km</div></td>
      <td><div><span id="elevation3"></span>m</div></td>
      <td><div id="moving_time_3"></div></td>
      <td><div id="time_km_3"></div></td>
    </tr>
    <tr>
      <td><div id="start_date_local_4"></div></td>
      <td><div id="activity4type"></div></td>
      <td><div id="activity4name"></div></td>
      <td><div><span id="activity4distance"></span> Km</div></td>
      <td><div><span id="elevation4"></span>m</div></td>
      <td><div id="moving_time_4"></div></td>
      <td><div id="time_km_4"></div></td>
    </tr>
    <tr>
      <td><div id="start_date_local_5"></div></td>
      <td><div id="activity5type"></div></td>
      <td><div id="activity5name"></div></td>
      <td><div><span id="activity5distance"></span> Km</div></td>
      <td><div><span id="elevation5"></span>m</div></td>
      <td><div id="moving_time_5"></div></td>
      <td><div id="time_km_5"></div></td>
    </tr>
    <tr>
      <td><div>5-day totals</div></td>
      <td><div>-</div></td>
      <td><div>-</div></td>
      <td><div><span id="activitytotaldistance"></span>Km</div></td>
      <td><div><span id="totalelevation"></span>m</div></td>
      <td><div>-</div></td>
      <td><div>-</div></td>
    </tr>
  </table>
</div>
<script>
function toTime(seconds) {
  var date = new Date(null);
  date.setSeconds(seconds);
  return date.toISOString().substr(11, 8);
}
$(function() {
  $.get('/running/strava_activities.json', function(data) {
    console.log(data);
    let aggregate = 0;
    for (let i = 0; i < 5; i++) {
      $("#start_date_local_" + (i + 1)).html((data[i].start_date_local).slice(0, 10));
      $("#activity" + (i + 1) + "type").html(data[i].type);
      $("#activity" + (i + 1) + "name").html(data[i].name);
      $("#activity" + (i + 1) + "distance").html(((data[i].distance) / 1000).toFixed(3));
      $("#elevation" + (i + 1)).html(data[i].total_elevation_gain);
      $("#moving_time_" + (i + 1)).html(toTime(data[i].moving_time));
      if (data[i].distance > 0) {
        $("#time_km_" + (i + 1)).html(toTime(((data[i].moving_time) / ((data[i].distance) / 1000))).slice(3));
      }
      aggregate += Number(data[i].distance);
    }
    $("#activitytotaldistance").html((aggregate / 1000).toFixed(3));
  });
});
</script>
</body>
</html>通过本教程,你学习了如何使用 jQuery 从 JSON 文件中提取数据,循环遍历数据,计算总距离,并将结果动态显示在网页上。 这种技术可以应用于各种场景,例如显示统计数据、汇总信息等。 记住要确保 JSON 数据格式正确,并且在进行数值计算时要进行类型转换。
以上就是使用 jQuery 和 JSON 数据动态计算并显示总距离的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号