
本教程旨在指导如何使用j*ascript将网页中以“x月y天前”等相对格式显示的日期转换为html `data`属性中存储的精确iso时间戳。文章将通过dom操作,详细讲解如何定位目标元素、提取数据属性值,并更新其文本内容,提供示例代码和注意事项,帮助开发者实现日期显示优化。
在现代网页应用中,为了提升用户体验,日期和时间常常以相对形式展示,例如“2小时前”、“3天前”或“9个月10天前”。然而,在某些场景下,用户或开发者可能需要查看精确的绝对时间戳,以便进行数据分析、调试或记录。幸运的是,许多网页在HTML结构中已经预埋了这些精确的时间信息,通常存储在元素的data属性中。本教程将详细介绍如何利用J*aScript来获取这些隐藏的绝对时间戳,并将其动态替换掉页面上显示的相对日期。
假设我们遇到以下HTML结构,其中
<tr id="job-id" class="job-id-class someotherclass-id">
<td data="2025-12-17T06:32:13Z"> 9 mo 10 days -
<a href="job/agent-info/lastSuccessfulBuild/" class="model-link inside">#2170</a>
</td>
</tr>我们的目标是将" 9 mo 10 days -"这段文本替换为"2025-12-17T06:32:13Z"。实现这一目标的关键在于以下两点:
我们将使用J*aScript的DOM操作API来完成这一任务。
首先,创建一个J*aScript函数来封装替换逻辑。这个函数将负责查找元素、读取属性和更新文本。
达奇AI论文写作
达奇AI论文辅助写作平台,在校学生、职场精英都在用的AI论文辅助写作平台
106
查看详情
/**
* 替换HTML表格单元格中的相对日期为data属性中存储的绝对时间戳。
*
* @param {string} selector 用于定位目标<td>元素的CSS选择器。
* 例如:'td[data]' 或 '#job-id td'。
*/
function replaceRelativeDateWithTimestamp(selector) {
// 使用document.querySelector获取第一个匹配的<td>元素
// 如果页面中有多个需要替换的元素,可以使用document.querySelectorAll并遍历
const targetCell = document.querySelector(selector);
if (targetCell) {
// 获取data属性的值,即精确的时间戳
const timestamp = targetCell.getAttribute('data');
// 检查timestamp是否存在
if (timestamp) {
// 修改<td>元素的第一个文本节点的数据。
// 注意:如果<td>内部有其他子元素(如<a>标签),
// firstChild可能指向文本节点,也可能指向其他元素。
// 在本例中," 9 mo 10 days -"是第一个文本节点。
// 如果<td>内只有文本,也可以直接使用 targetCell.textContent = timestamp;
// 找到第一个子节点,并确保它是文本节点
let firstChildNode = targetCell.firstChild;
while (firstChildNode && firstChildNode.nodeType !== Node.TEXT_NODE) {
firstChildNode = firstChildNode.nextSibling;
}
if (firstChildNode) {
firstChildNode.data = timestamp + ' - '; // 加上原始的连接符
} else {
// 如果没有找到文本节点,直接设置textContent(可能会覆盖所有子元素)
targetCell.textContent = timestamp + ' - ';
}
console.log(`日期已更新为:
${timestamp}`);
} else {
console.warn(`元素 ${selector} 没有找到 'data' 属性。`);
}
} else {
console.warn(`未找到匹配选择器 '${selector}' 的元素。`);
}
}
// 示例调用:
// replaceRelativeDateWithTimestamp('td[data]');
// 或者更具体的选择器,例如:
// replaceRelativeDateWithTimestamp('#job-id td');为了演示上述函数的效果,我们创建一个简单的HTML页面,包含一个表格和触发替换的按钮。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>动态替换日期</title>
<style>
table, th, td {
border: 1px solid #ccc;
border-collapse: collapse;
padding: 8px;
text-align: left;
}
button {
margin-top: 15px;
padding: 10px 20px;
cursor: pointer;
}
</style>
</head>
<body>
<h1>动态替换表格日期示例</h1>
<table>
<thead>
<tr>
<th>构建日期</th>
<th>构建ID</th>
</tr>
</thead>
<tbody>
<tr id="job-id" class="job-id-class someotherclass-id">
<td data="2025-12-17T06:32:13Z"> 9 mo 10 days -
<a href="job/agent-info/lastSuccessfulBuild/" class="model-link inside">#2170</a>
</td>
<td>#2170</td>
</tr>
<tr id="another-job" class="another-job-class">
<td data="2025-03-01T10:00:00Z"> 1 year 5 months ago -
<a href="job/another-agent/lastSuccessfulBuild/" class="model-link inside">#3001</a>
</td>
<td>#3001</td>
</tr>
</tbody>
</table>
<br>
<button onclick="replaceRelativeDateWithTimestamp('td[data]')">替换所有相对日期为时间戳</button>
<script>
/**
* 替换HTML表格单元格中的相对日期为data属性中存储的绝对时间戳。
*
* @param {string} selector 用于定位目标<td>元素的CSS选择器。
* 例如:'td[data]' 或 '#job-id td'。
*/
function replaceRelativeDateWithTimestamp(selector) {
// 使用document.querySelectorAll获取所有匹配的<td>元素
const targetCells = document.querySelectorAll(selector);
if (targetCells.length > 0) {
targetCells.forEach(targetCell => {
const timestamp = targetCell.getAttribute('data');
if (timestamp) {
let firstChildNode = targetCell.firstChild;
while (firstChildNode && firstChildNode.nodeType !== Node.TEXT_NODE) {
firstChildNode = firstChildNode.nextSibling;
}
if (firstChildNode) {
firstChildNode.data = timestamp + ' - ';
} else {
targetCell.textContent = timestamp + ' - ';
}
console.log(`日期已更新为: ${timestamp}`);
} else {
console.warn(`元素 ${targetCell.outerHTML} 没有找到 'data' 属性。`);
}
});
} else {
console.warn(`未找到匹配选择器 '${selector}' 的元素。`);
}
}
</script>
</body>
</html>在上面的HTML示例中,我们修改了replaceRelativeDateWithTimestamp函数,使其能够处理页面上所有带有data属性的
通过本教程,我们学习了如何利用J*aScript的DOM操作功能,将HTML元素中相对格式的日期动态替换为存储在data属性中的精确ISO时间戳。掌握document.querySelector/querySelectorAll、getAttribute和firstChild.data等API,可以有效地对网页内容进行客户端侧的动态调整,从而提升数据展示的灵活性和用户体验。在实际开发中,请务必考虑选择器的精确性、DOM结构的复杂性以及潜在的性能影响,以构建健壮高效的解决方案。
以上就是利用J*aScript动态转换HTML中相对日期显示为绝对时间戳的详细内容,更多请关注其它相关文章!
# 论文写作
# 临汾seo推广哪家好做
# 历城网站建设
# 珠宝首饰品牌营销推广
# 青岛市百度网站优化公司
# 中山全网络营销推广
# 嘉兴营销推广服务招聘网
# 珠海环保seo优化
# 营销号拼多多怎么做推广
# 徐州电子网站主词优化
# 网络营销推广宣传语言
# 创建一个
# 没有找到
# 中有
# 这一
# css
# 的是
# 第一个
# 遍历
# 多个
# 选择器
# html元素
# css选择器
# go
# node
# html
# java
# javascript
# react
# vue
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置
DeepSeek超全面指南:入门必看
vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读
《狐友》联系客服方法
苹果官网国补入口在哪
性能与资源监视器快捷打开
excel怎么制作考勤表 excel考勤模板与函数公式讲解
微信网页版在线登录 微信网页版在线使用入口
iphone16系列配置参数介绍
怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】
《edge浏览器》关闭翻译功能方法
猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程
J*aScript与CSS动画:实现平滑顺序淡入淡出效果并解决显示冲突
Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践
键盘测试软件哪个好_键盘故障检测工具推荐
《淘票票》添加到苹果钱包教程
告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度
海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接
《洛克王国:世界》国家队搭配攻略
如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧
使用VS Code调试Python代码:从入门到精通
知音漫客官网首页入口_知音漫客热门漫画推荐
《深林》冬季章节图文攻略
邦丰播放器频道搜索设置
Lar*el 中高效执行多列更新:单次查询实现
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
《via浏览器》强制缩放网页设置方法
抖音网页版官方链接 抖音网页版官网链接入口
《虎扑》关闭社区内容推荐方法
j*a中赋值运算符是什么?
12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案
《飞猪旅行》购买汽车票方法
抖音视频如何添加标题?添加标题有哪些好处?
Flash AS3.0简易相册制作
服装短视频如何起号推广?服装短视频起号推广有什么要求?
《爱笔思画x》涂色教程
广州地铁app准妈咪徽章领取方法
b站如何管理订阅_b站订阅标签分类管理
创建快捷方式启动系统保护
德邦快递查询入口登录官网 德邦快递单号查询系统入口
汽车之家网页版免费登录_汽车之家官网首页直接进入
mysql中如何分析索引使用情况_mysql索引使用分析方法
《蓝色星原:旅谣》坐骑获取攻略
蜻蜓FM如何设置移动流量播放
J*aScript类型数组_TypedArray使用
重返未来:1999卡戎全方位攻略
Mac怎么关闭按键声音_Mac键盘打字音效设置
小米civi如何设置锁屏时间
苹果11如何更换iCloud账号_苹果11账号切换的具体步骤
QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航
2025-11-24
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。