Liebe Forumsbesucher und Moderatoren,
nachdem Ihr mir letztens sehr schnell und freundlich geholfen habt
, habe ich hier eine weitere Frage, die ich auch mit hartnäckigen Versuchen nicht selbst lösen konnte. 
Ich möchte, dass während des Drückens einer Taste etwas regelmäßig geschieht (zum Beispiel, dass sich ein Cursor gleichmäßig bewegt). Nach meinen JavaScript-Kenntnissen geht das, indem bei onkeydown ein setInterval eingerichtet wird und bei onkeyup ebendieses durch clearInterval aufgelöst wird. Eine Variable namens "Aktiviert" sorgt dafür, dass setInterval bei onkeydown auch bei langem Drücken nur einmal gemacht wird (ich glaube, man nennt so etwas flag).
Ich versuchte es wie folgt:
Doch onkeyup funktioniert nicht. Ich nehme an, dass var Regel nicht richtig übergeben wird, sodass dem Browser bei onkeyup nicht bewusst ist, auf was sich clearInterval bezieht. Habe ich einmal die Pfeiltaste gedrückt, geht der Curser auch nach Loslassen der Taste immer weiter. Eigentlich sollte der Cursor nach dem Loslassen der Pfeiltaste stehen bleiben. Wie kann ich es lösen, dass in der Funktion onkeydown {} ein setInterval bestimmt und genau dieser Timer in der Funktion onkeyup {} wieder beendet wird?
Ich habe im Forum intensiv gesucht, ob die Frage schon einmal so oder so ähnlich gestellt wurde, und nichts gefunden. Falls doch schon Antworten existieren, bitte ich um einen kurzen Verweis.
Vielen Dank für Eure Hilfe!
Johannes
nachdem Ihr mir letztens sehr schnell und freundlich geholfen habt
Ich möchte, dass während des Drückens einer Taste etwas regelmäßig geschieht (zum Beispiel, dass sich ein Cursor gleichmäßig bewegt). Nach meinen JavaScript-Kenntnissen geht das, indem bei onkeydown ein setInterval eingerichtet wird und bei onkeyup ebendieses durch clearInterval aufgelöst wird. Eine Variable namens "Aktiviert" sorgt dafür, dass setInterval bei onkeydown auch bei langem Drücken nur einmal gemacht wird (ich glaube, man nennt so etwas flag).
Ich versuchte es wie folgt:
Code:
var Aktiviert = false;
document.body.onkeydown = function (event) {
var Richtung = event.keyCode;
if (Richtung == 37) { //Linkspfeil wurde gedrückt
if (Aktiviert == false) { //Bei langem Drücken nur einmal setInterval machen
var Regel = setInterval(function() {Bewegung()}, 40);
return Regel;
Aktiviert = true; return Aktiviert;}}}
document.body.onkeyup = function (event) {
var Richtung = event.keyCode;
if (Richtung == 37) { //Linkspfeil wurde wieder losgelassen
clearInterval(Regel);
Aktiviert = false; return Aktiviert;}}
function Bewegung () {
var Cursor = document.getElementById('Cursor');
Cursor.style.left = Number(Cursor.style.left.replace('px',''))-8+'px';} //Alle 40ms geht der Cursor 8px nach links.
Ich habe im Forum intensiv gesucht, ob die Frage schon einmal so oder so ähnlich gestellt wurde, und nichts gefunden. Falls doch schon Antworten existieren, bitte ich um einen kurzen Verweis.
Vielen Dank für Eure Hilfe!
Johannes