Funktion JavaScript funktioniert nicht.?
Ganz grob erklärt soll meine Website immer Abwechselnd ein Video und dann eine Frage anzeigen. In meiner Funktion für das Video soll beim Klicken auf den Video-Link die nächste Frage(-Funktion) aufgerufen werden. Das hat auch bei den ersten 2 Fragen geklappt. Aber bei der 3. Frage springt er wieder auf die vorherige Frage2 (statt wie gewünscht Frage3) zurück.
Weiß jemand woran das liegen könnte?
Ich wäre super dankbar für eine Antwort.
Danke und Liebe Grüße! ☺️
// 2. FRAGE
function frage2(){ // nach richtiger antwort aufgerufen
delete richtig;
buttonvoll(); //buttons sichtbar machen
document.getElementById("frage1").innerHTML = 'Was haben wir im Urlaub gemacht?'; // 2. frage
document.getElementById("text").innerHTML = 'super gemacht! </br> Errinnerst du dich noch an unseren 1. Urlaub?';
document.getElementById("button1").innerHTML = 'Schneemann'; //antworten in buttons schreiben
document.getElementById("button2").innerHTML = 'Schneefrau';
document.getElementById("button3").innerHTML = 'Schneeengel';
document.getElementById("button4").innerHTML = 'Schneeballschlacht';
document.getElementById("button3").id = 'test2'; // kurzes umbennenen der richtigen antwort
var richtig2 = document.getElementById('test2'); //klick-event bei richtiger Antwort
richtig2.addEventListener('click', weg2);
function weg2(){
document.getElementById("test2").id = 'button3'; // umweg um zurückspringen zu verhindern
video4();
}
}
function video4(){
document.getElementById("video").style.fontSize = "55pt"; //Link sichtbar machen
buttonleer(); // button verbergen
document.getElementById("frage1").innerHTML = ''; // Frage leer
document.getElementById("video").innerHTML = 'weiter gehts';
document.getElementById("video").href = 'https://youtu .be/bE3N64nofss'; //Winterurlaub
var weiter4 = document.getElementById('video'); //klick-event bei drücken auf link
weiter4.addEventListener('click', frage3);
}
// 3. FRAGE
function frage3(){ // bei richtiger antwort aufgerufen
...
Kannst du den Code lesbar in die Frage einfügen statt ein Foto vom Bildschirm zu machen?
Ok, danke. Ich versuche es. ;)
Aber das gesamte Program ist sehr lang und unübersichtlich. Ich würde den entscheidenden Teil hochladen.
1 Antwort
Dein Codeausschnitt reicht nicht aus, um eine definitive Antwort zu geben. Eine Vermutung vom mir ist aber, dass du auf dein Element mit der ID test2 einfach immer nur einen neuen click-Eventlistener drauf packst. Damit wird aber der vorherige Listener nicht entfernt und der wird auch zuerst aufgerufen.
Du solltest nach dem Aufruf also immer den vorherigen Eventlistener entfernen:
https://www.w3schools.com/jsref/met_element_removeeventlistener.asp
Alternativ kannst du deine Programmlogik auch so abändern, dass du mit einem click-Event auskommst und da drin jeweils entscheidest, mit welchem Video es weitergeht.
Ohne den ganzen Code kann man dazu nichts weiter sagen. Auf jeden Fall ist das nicht wirklich gut durchdacht programmiert. Die ID eines Elements solltest du zum Beispiel nie ändern und dazu gibt es auch keine Notwendigkeit bei dir.
Um den Fehler zu finden, solltest du zum Debuggen am besten mal ein paar console.log("ich bin hier") einbauen um zu sehen, welcher Eventhandler und welche Funktion an welchem Punkt aufgerufen wird. Das hilft am einfachsten solche Fehler einzugrenzen.
Ich bin leider totaler Anfänger und hab das irgendwie zusammengebastelt. 😅🙈 Danke dann probiere ich da nochmal rum.
Hey, erstmal vielen Dank für die Antwort. :)
Ich hab die ID eigentlich extra jedes mal mit einem neuen Idex versehen (test1, test2, ...). Und bevor ich die Videos eingefügt habe hat auch alles funktioniert.
Ich sehe auch keinen Unterschied zu den ersten zwei Videos und Fragen wo alles funktioniert. :(