Javascript 在html5中动态生成音频的时间和小数点格式
我创建了一个非常简单的音频播放器,可以播放一个小的mp3文件 它的工作原理和功能已被接受,但我想使音频当前时间的生成更加动态,因为在音频播放过程中,如果需要,它会生成小数点和分钟位置 目前我有一个函数,可以将audio.mp3当前时间转换为分、秒和毫秒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
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