首页 > 解决方案 > 如何以正确的形式获得秒、分钟和小时?

问题描述

我设法创建了这段代码来设置歌曲的计时器......问题是,正如你所看到的,我必须为两个不同的功能(“tiempo”和“durasion”)重复同一行代码") 唯一的区别是,一个我想知道 .duration 时间,另一个我想知道 .currentTime。

所以我想隔离重复的代码部分并稍后调用它,但我不知道该怎么做。

变量“totalNumberOfSeconds”需要在两个函数中更改其内容,如果我隔离重复“结果”的代码,则为 NaN。

“audio”是包含<audio>来自 html 和歌曲的标签的变量,“timer”是一个<span>包含“0:00/0:00”作为时间计数器的标签。

** **

audio.ontimeupdate = function() {totalTiempo()};

function totalTiempo() {
    document.getElementById("timer").innerHTML = tiempo() + '/' + duracion()
}


function tiempo() {
     totalNumberOfSeconds = Math.floor(audio.currentTime)
     const hours = parseInt( totalNumberOfSeconds / 3600 );
     const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
     const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
     const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
     console.log(result)
     return result
}

function duracion() {
     totalNumberOfSeconds = Math.floor(audio.duration)
     const hours = parseInt( totalNumberOfSeconds / 3600 );
     const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
     const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
     const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
     console.log(result)
     return result
}

标签: javascripthtml5-audioreusability

解决方案


您可以通过创建一个带参数的函数来做到这一点,如下所示:

function convertTimeToString(time) {
     totalNumberOfSeconds = Math.floor(time)
     const hours = parseInt( totalNumberOfSeconds / 3600 );
     const minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
     const seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
     const result = (minutes < 10 ?  + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
     console.log(result)
     return result
}

然后,您可以稍后使用所需的任何变量调用此函数,如下所示:

function tiempo() {
     return convertTimeToString(audio.currentTime)
}

function duracion() {
     return convertTimeToString(audio.duration)
}

您也可以直接在getTotalTiempo函数中调用它,如下所示:

function totalTiempo() {
    document.getElementById("timer").innerHTML = convertTimeToString(audio.currentTime) + '/' + convertTimeToString(audio.duration)
}


推荐阅读