Code: Select all
audioUpdationFunction: function(){ // RE-WRITE THIS AGAIN
mainFunction.currentSong.songAudio.addEventListener("timeupdate", ()=>{
audioSlider.max = mainFunction.currentSong.songDuration
audioSlider.value = mainFunction.currentSong.songAudio.currentTime
console.log(audioSlider.value)
// Audio-End detection
let intAudio = parseInt(audioSlider.value)
if(mainFunction.currentSong.songDuration === intAudio){
mainFunction.count++
}
})
audioSlider.addEventListener("input", ()=>{
mainFunction.currentSong.songAudio.currentTime = audioSlider.value
})
},
Dieser Code ist hauptsächlich in OOP-Objekten und nicht in irgendeiner Klasse geschrieben. Und entschuldigen Sie, wenn der Code beschissen aussieht, ich bin nur ein 18-Neuling, der alles alleine macht geht nicht näher auf die Ursache des Problems ein. Hier ist die Lösung. Zum besseren Verständnis kann ich den gesamten Code angeben.
Hier ist die Chatgpt-Antwort
Code: Select all
audioUpdationFunction: function() {
// Remove any existing listeners to avoid duplicates
mainFunction.currentSong.songAudio.removeEventListener("timeupdate", mainFunction.handleTimeUpdate);
// Define the handler as a named function for proper removal
mainFunction.handleTimeUpdate = () => {
audioSlider.max = mainFunction.currentSong.songDuration;
audioSlider.value = mainFunction.currentSong.songAudio.currentTime;
let intAudio = parseInt(audioSlider.value);
if (mainFunction.currentSong.songDuration === intAudio) {
console.log("Song ended");
mainFunction.count++;
console.log("Count:", mainFunction.count);
if (mainFunction.count >= mainFunction.songQueue.length) {
mainFunction.count = 0; // Loop back to the first song if needed
}
mainFunction.currentSong = mainFunction.songQueue[mainFunction.count];
mainFunction.currentSong.songAudio.play();
mainFunction.audioUpdationFunction(); // Reattach for the new song
}
};
// Attach the cleaned-up listener
mainFunction.currentSong.songAudio.addEventListener("timeupdate", mainFunction.handleTimeUpdate);
// Slider manual input handling
audioSlider.addEventListener("input", () => {
mainFunction.currentSong.songAudio.currentTime = audioSlider.value;
});
}