Wieviele Benutzernamen kann der Benutzer denn auf einmal eingeben? Mir stellt sich die Frage, was die Schleife da zu suchen hat. Normalerweise gibt *ein* Benutzer *einen* Benutzernamen an. Eine Prüfung bezieht sich darauf, ob dieser gültig ist. Bei dir wird eine Schleife angestoßen, die ausgeführt wird, solange der Benutzername ein Leerstring, NULL oder „Dein Name“ ist. Kannst du das Konstrukt bitte näher erläutern?
Tschö, Auge
Nun,
var UserName = "";
while (UserName = "" || UserName == null || UserName == "Dein Name")
{
UserName = window.prompt("Wie lautet dein Name?", "Dein Name");
UserName = trim (UserName);
}
window.alert("Hallo " + UserName);
Die while-Schleife erscheint mir als eine einfache Möglichkeit den User dazu zu bringen einen Namen einzugeben.. Normalerweise wird der User auch von sich aus einen Namen eingeben. Das günstige an der while-Schleife ist, dass sie mögliche "Täuschungsversuche" wie Whitespace, Nichts oder Abbrechen des Users "abblocken" kann (Sie überprüft praktisch die Gültigkeit der Eingabe des Users). Im Falle dieses Falles wird der User direkt erneut nach seinem Namen gefragt. Die Variable UserName kommt an zahlreichen Stellen der Webseite vor - und Whitespace etc. sind da fehl am Platze.
Aber nun zu der Sache die ich nicht ganz nachvollziehen kann:
Ohne den Script-Teil
User Name = trim (UserName);
- kann der User die Eingabezeile nicht mit 'Dein Name' ausgefüllt lassen, (' "Dein Name" '-Gültigkeitsüberprüfung)
- kann der User die Eingabezeile nicht leer lassen und auf 'Weiter' klicken, (' "" '-Gültigkeitsüberprüfung)
- kann der User die Eingabeaufforderung nicht Abbrechen (' null '-Gültigkeitsüberprüfung)
Um mir den umständlichen Teil wie
while (UserName == "" || UserName == " " || UserName == " " ~~
zu ersparen hat mir jemand die function trim (str) geschrieben (Danke nochmal dafür ;) )
Mit dem Script-Teil
UserName = trim (UserName);
gibt es einen Unterschied:
Drückt der User auf 'Abbrechen' fällt das nicht mehr unter die Gültigkeitsüberprüfung der while-Schleife - die while-Schleife bricht ab und der darauf folgende Teil im Script
window.alert("Hallo " + UserName);
wird nicht ausgeführt..
Ergo liegt es an
UserName = trim (UserName);
Ich habe keine Erklärung dafür warum die ' null '-Gültigkeitsüberprüfung mit dem trim-Teil nicht mehr funktioniert oder wie man das Ganze gar wieder zum laufen bringt ;)
Bernd