javascript - 我的音频时间进度条不起作用
问题描述
所以我想创建一个功能,当我点击进度条时,音频的当前时间会改变,我正在使用输入范围来制作进度条
<div class="player__duration">
<div class="player__duration--start"><p></p></div>
<input class="player__duration--bar" type="range" name="" id="" step="1" value="0" >
<div class="player__duration--end"><p></p></div>
</div>
这是我的 javascript
let counter = 0
let song = new Audio()
song.src = songs[counter].src
let changeTime = () =>{
let input = document.querySelector("input")
input.addEventListener("change",()=>{
song.currentTime = input.value
})
}
let play = () =>{
let playBtn = document.querySelector(".player__btn--play")
let pauseBtn = document.querySelector(".player__btn--pause")
playBtn.addEventListener("click",()=>{
pauseBtn.style.display="block"
playBtn.style.display="none"
song.play()
updateProgressBar()
totalTime()
})
}
let pause = () =>{
let playBtn = document.querySelector(".player__btn--play")
let pauseBtn = document.querySelector(".player__btn--pause")
pauseBtn.addEventListener( "click", ()=>{
playBtn.style.display = "block"
pauseBtn.style.display = "none"
song.pause()
})
}
let checkTime = (i) =>{
if(i<10){
i = "0"+ i
}
return i
}
let updateProgressBar =()=>{
let input = document.querySelector("input")
let currentT = document.querySelector(".player__duration--start")
let range = input.value
input.max = song.duration
song.addEventListener("timeupdate",()=>{
range = Math.floor(song.currentTime)
input.value = range
let minute = Math.floor(range / 60)
let second = Math.floor(range % 60)
minute = checkTime(minute)
second = checkTime(second)
currentT.innerText=minute + ":" +second
})
}
let totalTime = () =>{
let totalTime = document.querySelector(".player__duration--end")
let minute = Math.floor(song.duration / 60)
let second = Math.floor(song.duration % 60)
minute = checkTime(minute)
second = checkTime(second)
totalTime.innerText = minute + ":" +second
}
play()
changeTime()
pause()
因此,每当我单击进度条时,我都会使用输入范围的更改事件来更新音频的当前时间,它工作正常,但有时我必须双击或三次单击才能使其工作,我不知道为什么,如何通过单击更改当前时间。谢谢 !
解决方案
推荐阅读
- sql - 连接问题并在选择中两次使用相同的表列
- oracle - 尝试创建触发器但出现错误 PLS-00103
- java - 为什么 java HashMap 调整大小或重新散列没有像 Redis 那样采用渐进的方法
- tensorflow - 如何转换 Tensorflow 数据集的数据类型 [EMNIST/balanced](从 uint8 到 float32)
- c - C 编译器 `-O0` 是如何让代码变得如此疯狂的?
- java - 如何在本地 getArrow() 处更改 if(ab) 中 x 和 y 的值
- java - 这段代码中的两个类指的是什么?
- android - Flutter - 在 ThemeData 中使用自定义颜色和主题
- mysql - 转置 SQL 结果
- c# - 无法从 ASP.NET MVC 项目中的 SQL Server 过程中获取 Scope_identity