【发布时间】: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