mikethet: Funktion unverständlich

Beitrag lesen

Hallo, ich bins nochmal:

Will bei einem Tastendruck also onkeydown den Tastencode ermitteln und in später in einem Text_Feld ausgeben. Also z.B.: Pfeiltaste drücken : Tastencode 37.

Hierzu mein Code:

function init(){ //Wird beim vollständigen Laden des Body-Tags aufgerufen
document.onkeydown = keylistener;
var keydata = document.getElementById("TastenCode").innerHTML;
keydata = keylistener;
}
Dazu die Funktion keylistener:
function keylistener(e){
  switch(e.keyCode){
  case 37:
  moveleft(5);
  break;
  case 38:
  moveup(5);
  break;
  case 39:
  moveright(5);
  break;
  case 40:
  movedown(5);
  break;
  default:
  alert("Bitte Pfeiltasten verwenden!");
  var key = e.keyCode;
  return key;
  }

Habe das Beispiel aus einem Buch, nur das er if-Anweisungen statt switch-case verwendet (will ja nicht einfach abkupfern).

Nur erklärt er mir im Buch leider nicht, warum er erstens die Funktion keylistener in die Funktion init einträgt, welche ja nur nach dem Laden des Body-Tags in Kraft tritt. Danach kann er doch nicht wissen, wann ich wieder eine Taste drücke, wenn er gar nicht in der Funktion ist??

Nächste Frage: Warum muss ich bei der Funktion keylistener einen Parameter e  bzw xyz definieren? Ein Parameter wird doch übergeben, dieser hier hat aber keinen Wert, woher weiß die Funktion das Parameter sozusagen ein Objekt ist, aus welchem ich dann den Tastencode auslesen kann?

Die Bewegung mit den Pfeiltasten funktioniert einwandfrei. Allerdings das Ausgeben des Tastencodes nicht. Ich habe dann versucht der Funktion einen Rückgabewert key zu geben, welche ich dann in das Tastencode-Feld schreibe. Funktioniert aber nicht und komme nicht drauf. auch in der SELFHTML-Javascript-Erklärung über Funktionen steht nur, dass der Klammerwert von keylistener(e) ein Parameter ist der übergeben wird, aber doch kein Objekt. Vll könnt ihr mir helfen.

Danke und LG