Hauptmenü

Untermenü

JavaScript - Praxistutorial 2 - Diverse Feinarbeiten

1. Die Abschnitte

2. Hier stört doch was

Und zwar die Fragezeichen in den linken input-Feldern, wenn man dort nichts einträgt oder schon ein ??? vorhanden ist. In dem Fall muss der Anwender erst alles löschen, bevor er mit der erneuten Eingabe anfängt. Da das doch ziemlich nervt, wollen wir ihm ein wenig zur Hand gehen. So sollen denn die lästigen Fragezeichen sofort verschwinden, wenn man in das entsprechende Feld klickt. Also erzeugen wir erst mal in der check.js die folgende Funktion.


function clearField(field)
{
  if ('???' == field.value)
  {
    field.value '';
  }
}

Erläuterung

Der Parameter legt das entsprechende <input>-Feld fest. Wenn es den Wert ??? hat, so es mit field.value = ''; "geleert". Sieht sehr einfach aus und ist es auch. Aber wieso können wir auf die Formularlemente ohne das übliche Schema document.formularname.elementname zugreifen?

3. Das Wundermittel

Zunächst mal versehen wir alle <input>-Elemente im linken Bereich mit einem entsprechenden Event-Handler. Als Parameter geben wir dabei immer ein this an.


<input type="text" name="..." onmousedown="clearField(this)" />

this

... ist in JavaScript ein "Zeiger" auf sich selbst. Einfach gesagt bedeutet das Folgendes. Jedes Element, das bei einem Event-Handler ein this als Parameter für eine Funktion übergibt, sagt damit.

"Hey Funktion, guckst du, das hier bin ich" [Quelle: Ein Element, das sich selbst als Parameter an eine Funktion übergibt]

Wichtig!

Man könnte nun auf die Idee kommen, nicht mit Parametern zu arbeiten und das this direkt in die Funktion einzubauen. Oder das this als Parameter der Funktion festzulegen. Aber beides funktioniert nicht. Ein this kann in diesem Fall(!) immer nur von einem HTML-Element übergeben werden.

4. Eine Hilfsfunktion

In den nächsten beiden Abschnitten werden wir verstärkt mit Arrays arbeiten. Und wer sich das hier schon durchgelesen hat, wird wissen, dass es in JavaScript viele Funktionen nicht gibt, die uns zum Beispiel PHP bereit stellt. Also basteln wir uns mal etwas, dass dem schönen in_array entspricht. Und benennen es auch genau so.


function in_array (findarr) 
{
  for (var 0arr.lengthi++)
  {
    if (find == arr[i]) 
    {
      return true;
    }
  }
  return false;
}

Erläuterung

find ist der Wert, den wir in arr suchen wollen. Mit for (var i = 0; i < arr.length; i++) durchlaufen wir also besagtes Array und wenn der erste Paramater find vorhanden ist (if (find == arr[i])), so geben wir ein true zurück (return true;) und beenden besagte Schleife damit. Gleichzeitig wird dabei auch die Funktion abgebrochen, so dass das return false nur dann ausgeführt wird, wenn find nicht in arr gefunden wird.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt