jquery 将多个元素上的秒替换为时间格式

rqqzpn5f  于 2023-03-17  发布在  jQuery
关注(0)|答案(2)|浏览(112)

我有点挣扎。
我有多个元素包含以秒为单位的时间。

<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顺序中的最后一项(??)🤔我忽略了什么?

dbf7pr2w

dbf7pr2w1#

我认为应该使用**.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)); 
    };

});
zlwx9yxi

zlwx9yxi2#

@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>

相关问题