
本文档将指导你如何使用 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
接下来,我们将使用 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号