Warum erhöht sich die Anzahl um das Dreifache?JavaScript

Javascript-Forum
Guest
 Warum erhöht sich die Anzahl um das Dreifache?

Post by Guest »

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
})
},
Ich habe versucht, einen Spotify-Klon zu erstellen, und das hier ist meine Funktion, um das Audio zu aktualisieren und den Tracker oder den Musik-Slider mit dem Song synchron zu halten. Diese Funktion wird ausgelöst, wenn der Benutzer „Play“, „Next“ oder „Previous“ drückt, d Alles funktioniert einwandfrei, aber wenn der Ton endet, wird der Zähler um das Dreifache erhöht.
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;
});
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post