javascript - 如何以正确的形式获得秒、分钟和小时?
问题描述
我设法创建了这段代码来设置歌曲的计时器......问题是,正如你所看到的,我必须为两个不同的功能(“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
}
解决方案
您可以通过创建一个带参数的函数来做到这一点,如下所示:
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)
}
推荐阅读
- python - 正则表达式:如何组合条件以单独匹配任何非空白字符,同时忽略括号模式内的内容
- bash - 假脱机 SQL 输出到 CSV
- azure - 使用托管标识将 Azure Key Vault 与 Azure Kubernetes 服务集成
- shell - 为每个参考光标创建多个假脱机文件
- apache-pulsar - 现有消息上的 Pulsar-Functions
- javascript - 尝试使用 .to.equal 验证赛普拉斯中的数据表
- r - 子集数据以删除月份不完整的数据
- asp.net - 每天在同一时间清除 ASP.NET 会话变量
- laravel - 向表中添加列存在数据库中并填充它而不将其添加到数据库中
- python - 为每个查询的列表项保存单独的 CSV