2017-08-18 1 views
0

Ich habe für eine gute Minute versucht, herauszufinden, warum meine if-Anweisung nie auslöst. Jede Hilfe würde sehr geschätzt werden!Warum funktioniert meine JavaScript If-Anweisung nicht?

var clickcounter = 0; 
var buttonclicker = document.getElementById("buttonclicker"); 

function unblur() { 
    clickcounter = clickcounter + 1; 
    console.log(clickcounter); 
} 

if (clickcounter === 1) { 
    buttonclicker.textContent = "Unlock More"; 
    alert(clickcounter); 
} 

die Variable clickcounter wird als gleich oder mehr als 1 I zunächst versucht mit if (clickcounter => 1) und auch versucht if (clickcounter> 0), aber keine von diesen gearbeitet. Was mache ich falsch? Hier ist ein codepen der ganzen Sache: https://codepen.io/sage379/pen/JyppZv

+1

Sie setzen 'clickcounter' auf 0 und dann prüfen, ob es gleich 1 ist 1 Es ist nicht, es ist 0. Weil es nur gesetzt wurde 0. – David

+0

Was nennt man "unblur"? – Amy

+0

unblur wird von einer onClick-Funktion aufgerufen, ich habe viel Code weggelassen, mein Fehler. https://codepen.io/sage379/pen/JyppZv ist ein Codepen für die ganze Sache – user3161849

Antwort

1

auf Ihrem Codebeispiel Basierend unblur() wird nie so genannt clickcounter bleibt 0.

+0

und selbst wenn 'unblur' aufgerufen wird, hat die Bedingung bereits den Zustand von' clickcounter' getestet, also ist es zu spät. – Octopus

+0

@Octopus angenommen, dass der Code so geschrieben wird, wie er in der Frage erscheint. Manchmal kopieren Benutzer ein paar Zeilen hier, ein paar Zeilen dort, und fügen alles in die Frage ein, ohne zu wissen, wie viel Kontext sie herauswerfen. So interpretierte ich den Code in der Frage. – Amy

+0

Ich hätte angegeben werden sollen, unblur() heißt .. und ich weiß, dass die Variable geändert wird, weil ich es console.log den Wert von clickcounter gemacht habe .. hier ist ein CodePen davon: https://codepen.io/sage379/pen/JyppZv – user3161849

0

Das Problem ist, dass, sobald Sie clickcounter inkrementieren, Sie nie überprüfen, ob es geändert wird. Diese Prüfung wird einmal in Ihrem Skript ausgeführt, unmittelbar nachdem clickcounter = 0 eingestellt wurde.

Hier ist ein Beispiel, in dem ich diesen Check in eine neue Funktion namens checkClickCounter() eingewickelt habe. Diese Funktion wird bei jedem Aufruf durch einen Tastendruck mit unblur() aufgerufen. Ich habe Ihre if-Anweisung zurück zu >= geändert, aber da Sie um eins erhöhen, wird immer True nach einem Klick mit === zurückgegeben, so dass diese Änderung in Ihrem aktuellen Code keine Rolle spielt.

var clickcounter = 0; 
var buttonclicker = document.getElementById("buttonclicker"); 

function unblur() { 
    clickcounter = clickcounter + 1; 
    checkClickCounter(clickcounter); 
} 

function checkClickCounter(count){ 
    if (count >= 1) { 
     buttonclicker.textContent = "Unlock More"; 
     //alert(clickcounter); 
    } 
} 
0

Bitte versuchen Sie es mit dem folgenden Codeausschnitt. Lassen Sie mich wissen, wenn ich Ihre Anforderung nicht verstanden habe.

var clickcounter = 0; 
var buttonclicker = document.getElementById("buttonclicker"); 

     function unblur() { 

      clickcounter = clickcounter + 1; 
      console.log(clickcounter); 


      if (parseInt(clickcounter) >= 1){ 
        buttonclicker.textContent = "Unlock More"; 

      } 
     } 
0

Ihre Put if-Anweisung innerhalb von unblur:

var clickcounter = 0; 
var buttonclicker = document.getElementById("buttonclicker"); 
function unblur() { 
clickcounter = clickcounter + 1; 
console.log(clickcounter); 
if (clickcounter === 1) { 
    buttonclicker.textContent = "Unlock More"; 
    alert(clickcounter); 
} 
} 
Verwandte Themen