ColeSite/audioPlayer.js

62 lines
2.5 KiB
JavaScript
Raw Normal View History

2021-12-27 00:20:43 +00:00
const audioList = document.getElementsByClassName('audioPlayer');
var changingSlider = false
function convertTime(timeInSec)
{
const minutes = Math.floor(timeInSec / 60);
const seconds = Math.floor(timeInSec % 60);
const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;
return `${minutes}:${returnedSeconds}`;
}
Array.prototype.forEach.call(audioList, audio => {
// setup duration in slider and counter
audioElement = audio.getElementsByClassName("audioElement")[0];
audioElement.addEventListener('loadedmetadata', event => {
event.target.parentElement.getElementsByClassName("audioSlider")[0].max = event.target.duration
event.target.parentElement.getElementsByClassName("durationContainer")[0].innerHTML = convertTime(event.target.duration)
});
// set up slider to change counter when used
audio.getElementsByClassName("audioSlider")[0].addEventListener("input", event => {
event.target.parentElement.getElementsByClassName("timeContainer")[0].innerHTML = convertTime(event.target.value)
changingSlider = true;
})
// set slider to change part of music playing when used
audio.getElementsByClassName("audioSlider")[0].addEventListener("change", event => {
event.target.parentElement.getElementsByClassName("audioElement")[0].currentTime = event.target.value
changingSlider = false;
})
// set the audio element to change the sliders value whenever its time updates
audioElement.addEventListener("timeupdate", event => {
if (changingSlider)
{
return
}
event.target.parentElement.getElementsByClassName("audioSlider")[0].value = Math.floor(event.target.currentTime)
console.log("pogging")
event.target.parentElement.getElementsByClassName("timeContainer")[0].innerHTML = convertTime(event.target.currentTime)
})
// set the play button
audio.getElementsByClassName("playButton")[0].addEventListener("click", event => {
if (event.target.parentElement.parentElement.parentElement.getElementsByClassName("audioElement")[0].paused)
{
event.target.parentElement.parentElement.parentElement.getElementsByClassName("audioElement")[0].play()
event.target.src = "images/pause.png"
}
else
{
event.target.parentElement.parentElement.parentElement.getElementsByClassName("audioElement")[0].pause()
event.target.src = "images/play.png"
}
})
});