Ich verstehe den Java Script Text aus dem Informatik-Unterricht der 9ten Klasse nicht. Kann mir wer den erklären?

...komplette Frage anzeigen

3 Antworten

Einmal Zeile für Zeile:

function pruefeNachname() {

Es wird eine neue Funktion definiert, die pruefeNachname heißt und wohl auch dies tun wird. Die runden Klammern stellen die Parameterliste dar (hier gibt es keine expliziten Parameter) und die geschweifte Klammer öffnet den Funktionskörper.

var lEingabe = Rb.Nachname.value;

Nun wird der Nachname des Nutzers eingelesen und in einer Variable gespeichert. Aus welchen Objekt / Feld dieser Nachname kommt, ist an dieser Stelle nicht ersichtlich. Eventuell soll Rb für RadioButton stehen. Das dazugehörige Markup müsste einmal überprüft werden.

var lErlaubteZeichen = "abcdefghijklmnopqrstuvwxyzäöü?ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ-+";

Eine weitere Variable bekommt eine Zeichenkette zugewiesen, in der alle erlaubten Zeichen definiert werden, die im Nachnamen enthalten sein dürfen. Letzteres erschließt sich aus dem Kontext und Funktionsnamen.

for (i=0; i < lEIngabe.lenght; i++) {

Nun wird eine Iterationsschleife begonnen. Schleifen führen den folgenden Code-Block (ihren Körper) mehrmals aus. So lange, wie es ihr Kopf oder Fuß definiert. Die Iterationsschleife ist kopfgesteuert, es gibt keinen Fuß.

Im Kopf wird erst eine Variable definiert, die mit dem Wert 0 startet. Die Tatsache, dass diesmal kein var davorsteht, nennt sich grausige Programmierung, ist aber zulässig. Für den weiteren Verlauf ist es ausreichend, wenn du weißt, dass i eine normale Variable ist.

Nach dieser Initialisierung folgt die Bedingung. So lange, wie der Wert von i kleiner ist als die Länge des eingegebenen Wortes, so lange wird die Schleife laufen. Damit diese Bedingung irgendwann einmal eintreten kann, wird i bei jedem Durchlauf um 1 erhöht. Langschreibweise für letzteren Teil wäre also:

i = i + 1

Im Übrigen muss es lEingabe.length heißen. Jede Zeichenkette (String) kann auf die Eigenschaft length zugreifen, welche angibt, wie viele Zeichen die Zeichenkette lang ist.

if (lErlaubteZeichen.indexOf(lEingabe.charAt(i)) == -1) {

Nun wird geschaut, ob jedes Zeichen der Zeichenkette in der Liste an erlaubten Zeichen vorhanden ist. Zur Verständlichkeit drösele ich die Anweisungen noch einmal etwas auf:

if ist eine Kontrollstruktur, die eine Bedingung erwartet. Wenn diese wahr ist, wird der Körper der Struktur ausgeführt. Ansonsten nicht.

Die Funktion indexOf ist erneut eine Funktion, die jeder Zeichenkette zur Verfügung steht (ähnlich wie bei length). Ihr wird ein Argument übergeben (ein Zeichen), nach dem in der Zeichenkette gesucht wird.

Wenn man bspw. schreibt:

"hallo".indexOf("h");

wird in dem Wort hallo nach dem ersten Vorkommen des h gesucht und der jeweilige Index / die Position zurückgegeben. Hier wäre es die 0. Wenn das angegebene Zeichen nicht im Wort enthalten wäre, wäre der Rückgabewert -1.

Mit:

lEingabe.charAt(i)


wird sich erst einmal ein Zeichen aus dem angegebenen Nachnamen geholt. Da sich mit jedem Schleifendurchlauf ändert, wird jedes Zeichen einmal geholt werden.


Rb.Nachname.value= "";
Rb.Nachname.focus();

Das HTML-Element, welches den Nachnamen enthält, wird geleert, wenn ein unerlaubtes Zeichen in der Eingabe gefunden wurde. Zudem wird das Element in den Fokus geholt. Das heißt, der Nutzer könnte nun sofort mit der Eingabe beginnen, ohne das er das Element noch extra mit der Maus anvisieren müsste.

window.alert("Unerlaubte(s) Zeichen im Nachnamen!");

Das window-Objekt (jedes Browserfenster besitzt ein solches) ruft eine Funktion auf, die ein Popup-Fenster erscheinen lässt. In diesem steht der Text, der als Argument überreicht wurde.

return false;

Außerdem wird die Funktion abgebrochen. Der Wert false symbolisiert, dass der Nachname nicht valid wahr. Er könnte im Folgenden außen weiter verwendet werden. Ein Beispiel:

if(pruefeNachname()) { /* ... tu was ... */ }

Die Funktion gibt einen Wert zurück (true / false), die Kontrollstruktur nutzt diesen für seine Bedingung (wenn wahr, dann) und führt dementsprechend den folgenden Codeblock aus oder nicht.

Zuletzt werden die Code-Blöcke geschlossen und für den Fall, dass die Schleife durchlaufen konnte, ohne vorher unterbrochen worden zu sein, wird der Wert true zurückgegeben.

Weitere Fragen kannst du gern stellen, nur muss ich vorwarnen, dass so manches nicht kurz zu erklären ist.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Dinleberg
18.06.2017, 22:01

Vielen dank, es war bei mir vielmehr ein Denkfehler der mich komplett aus dem Konzept gebracht hat. Noch eine letzte Frage: Was bedeutet das " == -1 "

0

Falls die Eingabe ein Zeichen enthält, dass sich nicht unter den erlaubten Zeichen befindet, gibt die Funktion den Wert false zurück (Wahrheitswert, die Funktion ist also an sich ein bool). 

Nach einem return-Statement beenden sich Funktionen normalerweise, also wird nur true zurückgegeben, falls der Fall "false" nicht eintritt, d.h. die Eingabe keine unerlaubten Zeichen enthält.

Denke ich zumindest, js ist nicht so mein Fachgebiet.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Dinleberg
18.06.2017, 21:16

Danke, aber ich weiß ja was das programm tut, jedoch weiß ich nicht wie dieses funktioniert 

0

Was möchtest Du wissen?