2017-07-04 5 views
0

Ich suche nach etwas Unterstützung mit diesem Matheprojekt, das ich tue. Im Grunde habe ich vier Felder erstellt und eines mit der richtigen Antwort ausgefüllt. Wenn ich auf die richtige Antwort klicke, wird die if-Anweisung nicht ausgeführt; es zeigt sich immer als falsch.Javascript innerHTML Methode gibt falschen Wert zurück

Ich schneide ein Schnipsel, wenn jemand etwas grell falsch sehen kann, dann würde ich eine Antwort schätzen.

Ich versuche es nur mit Box 1, um zu sehen, ob es funktioniert, und die richtige Antwort füllt in 1 der 4 Boxen, aber es sagt immer, es ist die falsche Antwort, auch wenn die richtige Antwort in box1 ist.

document.getElementById("box1").onclick = function() { 
    if (playing == true) { 
    if (this.innerHTML == correctAnswer) { 
     score++; 
     document.getElementById("scorevalue").innerHTML = score; 
     hide("wrong"); 
     show("correct"); 
     setTimeout(function() { 
     hide("correct"); 
     }, 1000); 
    } else { 
     hide("correct"); 
     show("wrong"); 
     setTimeout(function() { 
     hide("wrong"); 
     }, 1000); 
    } 
    } 
} 
+1

Willkommen bei StackOverflow! Damit wir Ihnen besser helfen können, können Sie Ihre Frage aktualisieren, damit sie den ** relevanten Code ** in einem [** minimalen, vollständigen und überprüfbaren Beispiel **] anzeigt (http://stackoverflow.com/). help/mcve), einschließlich Ihrer 'hide()' - und 'show()' -Funktionen, zusammen mit Ihrem relevanten HTML und CSS? Es ist ein wenig schwierig, dieses Problem ohne es zu replizieren. Weitere Informationen finden Sie in der Hilfe zu [** Wie stelle ich gute Fragen?] (Http://stackoverflow.com/help/how-to-ask) und auf der [** Tour der Site **] (http://stackoverflow.com/tour) :) –

+1

Können Sie ein JSFiddle-Beispiel angeben, damit wir es "debuggen" können? –

+0

Beginnen Sie mit der Überprüfung, was 'innerHTML' eigentlich gleich ist, indem Sie' console.log (this.innerHTML); 'kurz vor dem' if' ausführen, das gegen 'correctAnswer' überprüft. So wie es ist, können wir dir nicht helfen, weil wir nicht wissen können, was 'innerHTML' ist. – Clonkex

Antwort

0

Statt zwei Werte mit == zu vergleichen, versuchen === in Ihren if-Anweisungen. Beispiel: if (playing === true) {

+1

Dies kann keine korrekte Antwort sein. Wenn das 'if' immer wieder wahr ist, hätte das OP gesagt, dass sein Projekt immer" korrekt "anzeigt. – Clonkex

0

Dies hängt höchstwahrscheinlich mit Ihrem HTML und der Art und Weise zusammen, wie Sie Ihre Tags eingerichtet haben. Zum Beispiel, wenn box1 ein div ist, dann, wenn Ihr Code wie folgt aussieht:

<div id="box1"> 
    answer 
</div> 

Dann in einigen Forschern, insbesondere Chrom und FireFox, hält es Zeilenumbrüche als leerer Raum.

Also, wenn var correctAnswer = "answer";

und Sie vergleichen correctAnswer mit box1.innerHTML wie so:

if (correctAnswer == box1.innerHTML) 

Dann erhalten Sie immer false zurückgegeben.

Um das Problem zu beheben, Ihre HTML ändern wie folgt:

<div id="box1">answer</div> 

Grundsätzlich sind die Zeilenumbrüche zu entfernen.

Alles andere scheint in Ordnung zu sein.

Verwandte Themen