新闻中心
使用 jQuery 和 JSON 数据动态计算并显示总距离

本文档将指导你如何使用 jQuery 从 JSON 文件中提取数据,并动态计算总距离,最终将结果显示在网页的表格中。我们将通过循环遍历 JSON 数据,累加距离值,并将总距离更新到指定的 HTML 元素中,提供代码示例和详细步骤,帮助你理解和应用该技术。
从 JSON 文件中提取数据并计算总距离
本教程将演示如何使用 jQuery 从 JSON 文件中提取数据,并计算表格中显示的五个活动距离的总和。
1. HTML 结构
首先,确保你的 HTML 结构包含用于显示数据的表格,并且包含用于显示总距离的元素,例如 span 或 div。以下是一个基本的 HTML 结构示例:
<div class="str*a-widget">
<table class="str*a-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 元素,我们将在这里显示计算得到的总距离。
先锋多用户商城系统
修改自网上仿乐购商城,新增功能:1、数据库在线备份与导入功能,可以随时备份数据库,数据受损可以导入数据库,确保数据安全;2、增加组合商品概念,可以用于组配商品销售(比如外套有蓝色和红色,鞋子有40码和41码等),买一送一、组合销售(比如上衣+围巾+长裙做为一个套装商品)和加价购买等销售方式;3、按照商品重量和送货距离实时计算精确运费,并可在订单中予以显示,使运费金额实现实时动态准确显示、清晰明了;
0
查看详情
2. J*aScript 代码
接下来,我们将使用 jQuery 来获取 JSON 数据,循环遍历数据,并将距离值累加起来。
function toTime(seconds) {
var date = new Date(null);
date.setSeconds(seconds);
return date.toISOString().substr(11, 8);
}
$(function() {
$.get('/running/str*a_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));
});
});代码解释:
- $.get('/running/str*a_activities.json', function(data) { ... });: 使用 jQuery 的 $.get() 方法异步请求 JSON 文件。
- let aggregate = 0;: 初始化一个变量 aggregate 用于存储总距离。
- for (let i = 0; i : 循环遍历 JSON 数据的前五个元素。
- $("#activity" + (i + 1) + "distance").html(((data[i].distance) / 1000).toFixed(3));: 从 JSON 数据中提取距离值,将其转换为公里,并保留三位小数,然后将其显示在对应的 HTML 元素中。
- aggregate += Number(data[i].distance);: 将当前活动的距离累加到 aggregate 变量中。注意使用 Number() 函数将距离值转换为数字类型。
- $("#activitytotaldistance").html((aggregate / 1000).toFixed(3));: 循环结束后,将计算得到的总距离(转换为公里并保留三位小数)显示在 activitytotaldistance 元素中。
3. 注意事项
- 确保你的 JSON 文件路径 /running/str*a_activities.json 是正确的,并且该文件包含有效的 JSON 数据。
- JSON 数据中的距离值应该以米为单位,代码中会将其转换为公里。
- 在累加距离值时,务必使用 Number() 函数将字符串转换为数字,否则可能会导致字符串拼接而不是数值相加。
- 可以根据实际需求调整循环次数和数据显示格式。
4. 完整代码示例
<!DOCTYPE html>
<html>
<head>
<title>Str*a Activities</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<style>
.str*a-stats {
width: 100%;
border-collapse: collapse;
}
.str*a-stats td, .str*a-stats th {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
.str*a-stats th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<div class="str*a-widget">
<table class="str*a-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/str*a_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>5. 总结
通过本教程,你学习了如何使用 jQuery 从 JSON 文件中提取数据,循环遍历数据,计算总距离,并将结果动态显示在网页上。 这种技术可以应用于各种场景,例如显示统计数据、汇总信息等。 记住要确保 JSON 数据格式正确,并且在进行数值计算时要进行类型转换。
以上就是使用 jQuery 和 JSON 数据动态计算并显示总距离的详细内容,更多请关注其它相关文章!
# 将其
# seo单价查询
# 嵩明营销推广服务
# seo的精品课程
# 白城网站优化公司推荐
# 智能网站建设seo优化
# seo站长交流软件
# 漳州网站建设找哪家好
# 网站推广58同城
# 搜索该产品关键词排名
# 免费推广的全网营销
# 将在
# 是一个
# 连接到
# 如何使用
# 并将
# javascript
# 多用户
# 置顶
# 遍历
# 转换为
# gate
# lsp
# cdn
# ai
# ajax
# json
# js
# html
# jquery
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
如何使用纯J*aScript判断Input元素是否在特定类容器内
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
Go语言HTML解析:利用Goquery精准获取指定元素内容
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
Golang并发任务中错误如何聚合_Golang goroutine error收集方式
顺丰快递查单号物流信息 顺丰快递小程序查询入口
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践
照顾宝贝2小游戏免费秒玩入口
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
知音漫客官网漫画下载_知音漫客网页版阅读记录
windows10怎么关闭系统提示音_windows10彻底静音设置方法
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
C++如何比较两个字符串_C++ string compare函数与操作符对比
J*a里如何使用forEach遍历Map_Map遍历方法说明
提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案
NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略
汽车之家官方网站官网入口_汽车之家网页版直接进入
汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
C++ map遍历方法大全_C++ map迭代器使用总结
Win11怎么关闭快速启动_Win11彻底关机设置教程
如何在网页中实现特定地点的随机图片展示
sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置
CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色
小米14应用无法联网原因分析_小米14网络权限修复
LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别
2026春节假期时间安排 2026春节假日查询
微信网页版登录教程_微信网页版登录入口在哪
字由网在线版登录地址 字由网网页版安全入口
Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性
Golang如何优雅处理error_Golang error处理最佳实践总结
C++ string find函数返回值npos详解_C++字符串查找失败的判断条件
MongoDB聚合管道:正确匹配对象数组中_id的方法
CSS Box Model与弹性按钮:维持布局稳定的动画实践
内存疯狂猛猛涨价:主板销量直接腰斩!
b站赚钱渠道_b站收益来源
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配
b站如何看历史记录_b站观看历史找回方法
圆通快递查询实时追踪 圆通物流包裹状态快速查看
铃兰之剑为这和平的世界希里技能组及加点推荐
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
Python中如何避免重复条件判断:利用数据结构实现动态逻辑
Go语言中动态执行代码字符串的策略与实践
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】


2025-10-29
浏览次数:次
返回列表
>-</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/str*a_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>