• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage onkeydown-Funktion nicht dauerhaft ausführen

Willibergi

Mitglied
Moin,
ich habe eine onkeydown-Funktion und möchte diese aber nur ein einziges Mal ausführen.
onkeydown-Funktionen werden ja ausgeführt, solange eine Taste gedrückt wird.
Ich weiß, dass es die JQuery-Funktion .one() gibt, die führt die Funktion aber nur dauerhaft während des ersten Tastendrucks aus - ich möchte aber, dass die Funktion einmal ausgeführt wird, egal, wie lange die Taste gedrückt wird.
Hier erst mal mein Quellcode:
window.addEventListener('keydown', function(e){
//Blabla
});

Folgendermaßen funktioniert es nicht (aus welchen Gründen auch immer):
var first = true;
windows.addEventListener('keydown', function(e){
//Blabla
first = false;
});

Ich möchte also, dass die Funktion während des Tastendrucks ein einziges Mal ausgeführt wird und dann nicht mehr. Ich möchte aber die Funktion später wieder ausführen können - am Besten wäre es, wenn man den EventListener nach der ersten Ausführung der Funktion deaktivieren und bei Bedarf wieder aktivieren könnte.
LG Willibergi
 
Werbung:
Schon gelöst.
Meine Lösung oben funktioniert sehr wohl, ich hatte nur bei der if-Abfrage geschrieben:
if(first = true){......} und nicht if(first == true) {.......}
Leichtsinnsfehler...
 
Werbung:
@Sentence: Leider hat man nicht immer boolsche Variable im if und wenn man die extra erzeugt, dann kann der Fehler vorher passieren mit myBool = (myString ='') statt myBool = (myString =='')

@Willibergi: Willkommen im Club, weiß nicht, wie oft ich schon darüber gestolpert bin, besonders als ich noch viel parallel mit VB gearbeitet habe, wo der Vergleichsoperator nur = ist. Dann habe ich im JavaScript auch oft nur das = genommen. Jetzt passiert mir ab und an, dass ich im PHP zwei Strings mit + statt . verkette und wundere mich dann über die Ausgabe von 0 :).
 
In JavaScript wird empfolen === zu verwenden statt ==

Code:
false==undefined  // false
false==null       // false
null==undefined   // true


''=='0'           // false
0==''             // true
0=='0'            // true
lustig, oder?
 
Werbung:
Das ist einfach das Problem mit den meisten Scriptsprachen, weil die späte Typenbindung zulassen und implizit bei etlichen Operationen auch Type Casting machen.

Ein anderes Problem ist, dass man keine Variablen definieren muss, sondern die sozusagen bei der ersten Zuweisung oder gar Nutzung definiert werden. Damit sind durch Tippfehler generierte Probleme an der Tagesordnung. So hatte ich mal etwas aus einem PDF Dokument kopiert (war wohl so eine OCR Software) und da wurde ein l (kleines L) als | (senkrechter Strich) dargestellt. Manno, bis ich diesen Fehler gefunden habe.

Aber nun bin ich schon ganz schön Off-Topic, aber das wollte ich noch los werden :D
 
Zurück
Oben