提问人:mrmoon97 提问时间:3/8/2023 更新时间:3/9/2023 访问量:53
在多个元素上用时间格式替换秒
Replace seconds with time format on multiple elements
问:
我有点挣扎。
我有多个元素包含以秒为单位的时间。
<p><time class="replace_time">3.232151</time></p>
<p><time class="replace_time">5.234151</time></p>
...
jQuery(".replace_time").text(function(){
var d = jQuery(this).text();
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
if (h > 0) {
return (("0" + h).slice(-2) + ":" + ("0" + m).slice(-2) + ":" + ("0" + s).slice(-2));
}
else {
return ("0" + m).slice(-2) + ":" + ("0" + s).slice(-2);
};
});
它基本上是有效的,但不幸的是,仅适用于 DOM 顺序🤔中的最后一个 (??) 项目 我忽略了什么?
答:
1赞
ErnestasL
3/8/2023
#1
我认为您应该使用 .each 函数来获取每个元素
jQuery(".replace_time").each(function(){
var d = jQuery(this).text();
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
if (h > 0) {
jQuery(this).text(("0" + h).slice(-2) + ":" + ("0" + m).slice(-2) + ":" + ("0" + s).slice(-2));
}
else {
jQuery(this).text(("0" + m).slice(-2) + ":" + ("0" + s).slice(-2));
};
});
评论
0赞
mrmoon97
3/8/2023
不幸的是,这不能再取代任何东西了......🤔
0赞
ErnestasL
3/8/2023
尝试调试一下,我仍然认为潜在的问题是您没有遍历结果并访问每个结果,您是否每次都获得正确的元素作为 d?
1赞
mrmoon97
3/8/2023
是我的一个愚蠢的错误
0赞
RobG
3/9/2023
#2
@ErnestasL得到答案,则需要遍历初始查询返回的数组。
如果拆分时间格式化部分,其余部分非常简单,无需 jQuery 妨碍:
// Format seconds as time HH:mm:ss
function formatTime(secs) {
let z = n => ('0'+n).slice(-2);
let h = Math.floor(secs / 3600);
let m = Math.floor(secs % 3600 / 60);
let s = Math.floor(secs % 3600 % 60);
return `${z(h)}:${z(m)}:${z(s)}`;
}
document.querySelectorAll('.replace_time').forEach(
el => el.textContent = formatTime(el.textContent)
);
<p><time class="replace_time">3.232151</time></p>
<p><time class="replace_time">182735.234151</time></p>
评论
document.querySelectorAll(".replace_time").forEach(el => ...)