2016-04-18 6 views
0

Ich möchte die Rollen protokollieren, aber jedes Mal, wenn ich diesen Code ausführen, bekomme ich Werte jede Sekunde (oder so oft wie es im Intervall festgelegt ist). Ich möchte einen Weg, so dass ich Log nehmen kann, wann immer sich der Wert ändert, anstatt es jede Sekunde zu bekommen.Funktion jedes Mal ausführen, wenn Wert Änderungen Javascript

var red, black; 

function mainOnRed() { 
    switch (checkMainOnRed()) { 
     case "red": 
      console.log("Black"); 
      break; 
     case "black": 
      console.log("Red"); 
      break; 
    } 
}; 


function checkMainOnRed() { 
    if (currentColor == "black" && rowSet.length == 2) { 
     return "red"; 
    } else { 
     return "black"; 
    } 
} 

setInterval(mainOnRed, 1000); 

Werte:

currentColor 

und

rowSet 

sind in anderen Teilen des Skripts definiert.

Antwort

0

Ich würde so etwas tun:

var red, black, lastColor; 

function mainOnRed() { 
    var color = checkMainOnRed(); 
    if (color != lastColor) { 
     console.log(color); 
     lastColor = color; 
    }; 
}; 


function checkMainOnRed() { 
    if (currentColor == "black" && rowSet.length == 2) { 
     return "red"; 
    } else { 
     return "black"; 
    } 
} 

setInterval(mainOnRed, 1000); 
+0

Ich bekomme die allgemeine Idee. Obwohl Ihr Code nicht funktioniert, versuchen Sie, was ich denke – Klajdi

+0

Nvm, dachte ich, um den Wert bei Auftreten zu aktuellen Wert zu ändern, und dann überprüfen, ob die Werte übereinstimmten oder nicht, und wenn nicht, überprüfen Sie den aktuellen Wert und ändern Sie es. Aber Ihr Code hat den Trick gemacht, alles, was Sie brauchen, ist 'checkMainOnRed' auf' mainOnRed' auszuführen, damit auch der Wert überprüft wird. 'Funktion mainOnRed() { checkMainOnRed();' Es läuft seit einer Weile jetzt und funktioniert gut, und ich habe es auf einen Wert und nicht auf eine Reihe von Werten (mit 'String' und' html() '(und bei Bedarf' slice() ') anstatt die Funktion in' color' zu verwenden, wenn jemand nach Änderungen an Zeichen sucht. – Klajdi

+0

Ich bin froh, dass ich geholfen habe :) – vasekhlav

0

Es hängt davon ab, wann currentColor eingestellt ist.

Wenn für ein Ereignis festgelegt ist, können Sie einfach mainOnRed für jedes Ereignis aufrufen, das diesen Variablenwert ändert.

+0

erste basiert auf 'first = String ($ ("Klasse.") Scheibe (0) .html().);' Und 'if (erste > = 0 && first <= 100) { \t currentColor = "rot"; } sonst { \t currentColor = "schwarz"; } ' – Klajdi

+0

@Klajdi Sie möchten vielleicht Antworten hier zu sehen: http://StackOverflow.com/Q/1759987/6220751 – Tuvia