Javascript 在html5中动态生成音频的时间和小数点格式

Javascript 在html5中动态生成音频的时间和小数点格式,javascript,html,audio,html5-audio,Javascript,Html,Audio,Html5 Audio,我创建了一个非常简单的音频播放器,可以播放一个小的mp3文件 它的工作原理和功能已被接受,但我想使音频当前时间的生成更加动态,因为在音频播放过程中,如果需要,它会生成小数点和分钟位置 目前我有一个函数,可以将audio.mp3当前时间转换为分、秒和毫秒 this.format = function () { let secsCal = Math.floor(this.audio.currentTime % 60); let minsCal = Math.floor(this.au

我创建了一个非常简单的音频播放器,可以播放一个小的mp3文件

它的工作原理和功能已被接受,但我想使音频当前时间的生成更加动态,因为在音频播放过程中,如果需要,它会生成小数点和分钟位置

目前我有一个函数,可以将audio.mp3当前时间转换为分、秒和毫秒

this.format = function () {
    let secsCal = Math.floor(this.audio.currentTime % 60);
    let minsCal = Math.floor(this.audio.currentTime / 60);
    let millsCal = this.audio.currentTime % 60;

    let secs = ('0' + secsCal).substr(-2);
    let mins = ('0' + minsCal).substr(-2);
    let mills = ('0' + millsCal).substr(4, 2);




    document.getElementById('start-time').innerHTML = mins + ':' + secs + '.' + mills;
};
现在,这对我来说确实有效,但是这不是最好的解决方案,因为时间会显示分钟值,即使这个特定示例不是一分钟长。因此,理想情况下,我们只希望在音频允许的情况下显示分钟和秒

我努力实现的目标是:

仅当音频长度超过一秒时显示小数点 仅显示:如果音频样本实际长于一分钟。 我一直在寻找一个解决方案,如果有人能帮忙,那将是最有帮助的

请在下面找到我的例子


因此,经过一点自我反省之后,这个问题的答案是相对直截了当的,这里是进行更改的代码

   // only display 00:00.00 formats if the mp3 requires it

   if (minutes === 0 ) {
   minResult = '\u00a0';
   } else {
   minResult = minutes + ':';
   }
   if (seconds === 0 ) {
   secResult = '\u00a0';
   } else {
   secResult = seconds + '.';
   }
   if (millisecondsCal === 0 ) {
   millResult = '\u00a0';
   } else {
   millResult = milliseconds;
   }

   // append value to dom
   document.getElementById("duration").innerHTML = minResult + secResult + millResult;
所以这是如何工作的,首先检查我们没有任何等于0的值,因为如果我们有,那么我们不想显示相应的时间格式,否则显示给我们

显然,这更像是一个UI请求,只是给人一种印象,即玩家知道曲目的长度,并且只相应地显示秒和分钟

此方法放置在duration方法中。有关更多详细信息,请参见下文

const audio=document.createElementAUDIO; audio.setAttributeid,audio; audio.src=http://www.hscripts.com/tutorials/html/music.wav; audio.controls=true; audio.onloadedmetadata=函数{ document.getElementByIdduration.style.color=bdbdbd; document.getElementByIdstart-time.style.color=白色; //钮扣 document.GetElementByIdButton.AddEventListener单击,函数{ //切换音频播放 音频[音频.暂停?播放:暂停]; }; //将持续时间转换为HH:MM:SS durationaudio.duration; }; //函数将audio.duration转换为SS:mm格式 功能持续时间{ var分钟=parseInttime/60,10; var seconds=parseInttime%60; var毫秒刻度=时间%60; var毫秒=0+毫秒scal.substr4,2; console.logs; //创建空变量以存储值 var minResult=; var secResult=; var-millResult=; //仅在mp3需要时显示00:00.00格式 如果分钟===0{ minResult='\u00a0'; }否则{ minResult=分钟+':'; } 如果秒===0{ secResult='\u00a0'; }否则{ secResult=秒+'; } 如果毫秒刻度===0{ millResult='\u00a0'; }否则{ 结果=毫秒; } //向dom追加值 document.getElementByIdduration.innerHTML=minResult+secResult+millResult; } //将audio.currentTime转换为SS:mm格式 函数格式{ var secsCal=Math.flooraudio.currentTime%60; var minsCal=Math.flooraudio.currentTime/60; var millsCal=audio.currentTime%60; var secs=0+secsCal.substr-2; var mins=0+minsCal.substr-2; var mills=0+millsCal.substr4,2; //创建空变量以存储值 var minResult=; var secResult=; var-millResult=; //仅在mp3需要时显示00:00.00格式 如果millsCal==0{ millResult='\u00a0'; }否则{ millResult=mills; } //否则如果 如果audio.currentTime<1{ secResult='\u00a0'; }否则{ secResult=secs+'; } 如果minsCal==0{ minResult='\u00a0'; }否则{ minResult=mins+':'; } document.getElementByIdstart-time.innerHTML=minResult+secResult+millResult; } 变量更新=函数{ 总体安排 } audio.onplay=功能{ requestAnimationFrameaudio.onplay; 使现代化 }; audio.onpause=函数{ 取消AnimationFrameAudio.onplay; }; 身体{ 背景色:黑色; } 按钮{ 背景色:4242; 边框:2个实心BDBD; -webkit边界半径:10px; -moz边界半径:10px; 边界半径:10px; 字体大小:25px; 颜色:bdbd; 浮动:左; 大纲:无; 位置:相对位置; 光标:指针; 填充:20px; } 期间 开始时间{ 填充:20px; 浮动:左; } .时间{ 字体大小:20px; 颜色:黑色; 位置:相对位置; 顶部:0px; 最小宽度:60px; } 玩

00:00