JavaScript-Problem?
-
Hallo zusammen!
Vielleicht könnt ihr mir ja helfen. Habe vor längerer Zeit einmal ein kleines Skript in JavaScript geschrieben, welches die Tastaturanschläge, die in einer Minute gemacht werden, zählt. Heute bin ich durch Zufall noch mal auf das Skript gestoßen und habe mir nochmal aus Spaß meine Tastaturanschlage, welche ich in einer Minute mache, zählen lasse.
Dabei ist mir aufgefallen, dass wenn ich die Backspace-Taste drücke die Anzahl der Tastaturanschläge veringert werden soll, also habe ich mithilfe des ASCII-Codes versucht herauszufiltern, ob die Backspace-Taste gedrueckt wurde, aber irgendwie funktioniert das nicht. Kann mir vielleicht jemand sagen woran das liegt?? (Vielleicht am Textareafeld, ich habe keine Ahnung)P.S.: Das Skript ist nur IE kompatibel (event.keyCode).
<script language="javascript" type="text/javascript"> <!-- var iChar = 1; var iSecond = 0; var bRun = false; var timer; function count() { var tastenCode = event.keyCode; //alert(tastenCode) if(tastenCode != 8) { iChar++; document.liste.zaehler.value = iChar; } else { iChar--; document.liste.zaehler.value = iChar; } } function uhr() { if(bRun) { if(iSecond < 59) { iSecond++; document.liste.sekunden.value = iSecond; timer = setTimeout("uhr()",1000); } else if(iSecond == 59) { document.liste.sekunden.value = ""; clearTimeout(timer); alert("Timeout!"); bRun = false; } } } --> </script>
Caipi
-
Was soll das denn geben, wenn es fertig ist, und wie hast du das Ganze eingebungen?!
Wenn du das ganze nur in einem Textarea machen willst könntest du ja auch einfach immer die Länge von dessen Inhalt checken. Das kommt eben darauf an, was dein Script bzgl. Copy&Past und Löschen via Markieren und Entfernen/Ausschneiden liefern soll
-
@flenders
Das Skript soll nichts werden bzw. ist eigentlich fertig. Ich habe es früher einmal einfach zum Spaß geschrieben, um mich mit der Sprache ein wenig vertraut zu machen. Gestern bin ich halt zufällig wieder drüber gestolpert und habe den von mir im vorigen Post beschriebenen Fehler entdeckt (Wenn Backspace-Taste gedrueckt ist, soll die Variable iChar NICHT inkrementiert sondern dekrementiert werden). Wollte ihn halt ganz gern ausmerzen.Hier kommt mal der ganze Quellcode:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Zaehler fuer Tastaturanschlaege</title> <style type="text/css"> <!-- body { font-family:Verdana; } table { border-style:solid; border-width:1px; border-color:gray; background-color:#ececec; } --> </style> <script language="javascript" type="text/javascript"> <!-- var iChar = 1; var iSecond = 0; var bRun = false; var timer; function count() { var tastenCode = event.keyCode; //alert(tastenCode) if(tastenCode != 8) { iChar++; document.liste.zaehler.value = iChar; } else { iChar--; document.liste.zaehler.value = iChar; } } function uhr() { if(bRun) { if(iSecond < 59) { iSecond++; document.liste.sekunden.value = iSecond; timer = setTimeout("uhr()",1000); } else if(iSecond == 59) { document.liste.sekunden.value = ""; clearTimeout(timer); alert("Timeout!"); bRun = false; } } } --> </script> </head> <body onKeypress="count()"> <h1>Wer tippt am schnellsten?</h1> <p> </p> <table width="600" align="center"> <tr> <td width="200"><form name="liste">Bisherige getippte Zeichen:</td> <td width="400"><input type="text" name="zaehler" size="20" /></td> </tr> <tr> <td width="200">Dein Text:</td> <td width="400"><textarea name="schreibe" cols="50" rows="6" wrap="soft" onFocus="bRun=true;uhr()"></textarea></td> </tr> <tr> <td width="200">Vergangene Sekunden: </td> <td width="400"><input type="text" name="sekunden" size="20" /></td> </form> </tr> </table> </body> </html>
Caipi
-
Nimm mal anstelle von onKeypress onKeyDown - oder willst du einfach nur wissen, wie viele Zeichen im Textarea stehen?!
-
@flenders
Oh mann, jetzt geht es. Danke!
Aber ich frage mich wirklich, warum es bei onKeypress nicht funktioniert.
Was ist denn der Unterschied zwischen onKeypress und onKeydown??Caipi
-
http://www.selfhtml.net/javascript/sprache/eventhandler.htm
Warum du allerdings bei onKeypress kein Backspace bekommst, das weiß ich auch nicht so recht
-
@flenders
Vielen Dank für deine Hilfe!Caipi