So I am a total beginner - I put a music player that opens in a modal in JS and it works! However, on the same page but a different modal I want to make another music player (with a different playlist) and it shows nothing. I have two playlists one named music and one music2. I want to know if this is even possible to do atp …
I am doing this just for fun and learning a new skill - so I watched a tutorial on how to make a music player, so it isn’t an original code! I can show you my html as well if that helps!
const music = document.querySelector(".music"),
musicImg= music.querySelector(".img-area img"),
musicName = music.querySelector(".song-details .name"),
musicArtist = music.querySelector(".song-details .artist"),
mainAudio = music.querySelector("#main-audio"),
playPauseBtn = music.querySelector(".play-pause"),
prevBtn = music.querySelector("#prev"),
nextBtn = music.querySelector("#next");
progressArea = music.querySelector(".progress-area"),
progressBar = music.querySelector(".progress-bar"),
musicList = music.querySelector(".music-list"),
showMoreBtn = music.querySelector("#more-music"),
hideMusicBtn = music.querySelector("#close");
let musicIndex = 1;
window.addEventListener("load", ()=>{
loadMusic(musicIndex); //calling load function once window loads
})
// load music function
function loadMusic(indexNumb){
musicName.innerText = allMusic[indexNumb - 1].name;
musicArtist.innerText = allMusic[indexNumb - 1].artist;
musicImg.src = `playlist1/images/${allMusic[indexNumb - 1].img}.jpg`;
mainAudio.src = `playlist1/songs/${allMusic[indexNumb - 1].src}.mp3`;
}
//play music function
function playMusic(){
music.classList.add("paused");
playPauseBtn.querySelector("i").innerText = "pause";
mainAudio.play();
}
function nextMusic(){
musicIndex++;
musicIndex > allMusic.length ? musicIndex =1 : musicIndex = musicIndex;
loadMusic(musicIndex);
playMusic();
}
function prevMusic(){
musicIndex--;
musicIndex < 1 ? musicIndex = allMusic.length : musicIndex = musicIndex;
loadMusic(musicIndex);
playMusic();
}
//pause music function
function pauseMusic(){
music.classList.remove("paused");
playPauseBtn.querySelector("i").innerText = "play_arrow";
mainAudio.pause();
}
//play or music button event
playPauseBtn.addEventListener("click", () =>{
const isMusicPaused = music.classList.contains("paused");
//if isMusicPaused is true then call pauseMusic else call playMusic
isMusicPaused ? pauseMusic() : playMusic();
});
nextBtn.addEventListener("click", () =>{
nextMusic();
});
prevBtn.addEventListener("click", () =>{
prevMusic();
});
mainAudio.addEventListener("timeupdate", (e)=>{
const currentTime = e.target.currentTime;
const duration = e.target.duration;
let progressWidth = (currentTime / duration) * 100;
progressBar.style.width = `${progressWidth}%`;
let musicCurrentTime = music.querySelector(".current"),
musicDuration = music.querySelector(".duration");
mainAudio.addEventListener("loadeddata", ()=>{
let audioDuration = mainAudio.duration;
let totalMin = Math.floor(audioDuration / 60);
let totalSec = Math.floor(audioDuration % 60);
if(totalSec < 10){
totalSec = `0${totalSec}`;
}
musicDuration.innerText = `${totalMin}:${totalSec}`;
});
let currentMin = Math.floor(currentTime / 60);
let currentSec = Math.floor(currentTime % 60);
if(currentSec < 10){
currentSec = `0${currentSec}`;
}
musicCurrentTime.innerText = `${currentMin}:${currentSec}`;
});
progressArea.addEventListener("click", (e) =>{
let progressWidthval = progressArea.clientWidth;
let clickOddSetX = e.offsetX;
let songDuration = mainAudio.duration;
mainAudio.currentTime = (clickOddSetX / progressWidthval) * songDuration;
playMusic();
});