【问题标题】:how to get seconds, minutes, and hours in a proper form?如何以正确的形式获得秒、分钟和小时?
【发布时间】:2020-06-06 22:12:22
【问题描述】:

我设法创建了这段代码来设置歌曲的计时器......问题是,如您所见,我必须为两个不同的功能(“tiempo”)重复同一行代码和“duration”),唯一的区别是我想知道 .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
}

【问题讨论】:

  • 您在结果行中有一个拼写错误,您将“0”垫停了几分钟。我也不确定 parseInt 是否与 Math.floor 做同样的事情,但 Math.floor 绝对是你想要的几小时和几分钟的正确选择。

标签: javascript html5-audio reusability


【解决方案1】:

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

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)
}

【讨论】:

  • 谢谢兄弟......几周前我开始学习js,我不太了解参数的东西,所以除了编码问题本身这对我有很大帮助那也是!
【解决方案2】:

 
function totalTiempo() {
    document.getElementById("timer").innerHTML = tiempo(audio.currentTime) + '/' + duracion(audio.duration)
}
    function getTime(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
    }

 

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2019-02-12
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2010-12-19
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多