Hi,
Schreiben Sie eine HTML-Seite, die den Besucher der Seite beim Laden nach seinem Vornamen fragt und in Erfahrung bringt, ob er mit "Du" oder "Sie" angesprochen werden möchte. Anschließend erscheint ein kurzer Begrüßungstext, der den Namen des Besuchers hervorgehoben (fett) enthält und ihn korrekt mit "Du" oder "Sie" anredet. Zur Hervorhebung des Namens schreiben Sie bitte eine Funktion, die einen beliebigen Text, der als Parameter übergeben wird, in die HTML-Tags <strong> und </strong> einschließt.
als Übung ist diese Aufgabe sicher okay; in der wirklichen Welt möchte man sowas aber eher nicht in eine öffentliche Seite einbauen, weil solche Dinge meist als lästig empfunden werden.
Zu deinem Lösungsansatz gäbe es einiges zu sagen.
Die Methoden prompt() und alert() sind in ihren Möglichkeiten sehr eingeschränkt. Vor allem ist prompt() nicht für Eingaben geeignet, bei denen nur eine von mehreren Möglichkeiten ausgewählt werden soll. Die Aufgabenstellung würde ich eher mit einem Formular als mit prompt() und alert() angehen.
name = prompt("Was ist Ihr Vorname");
Fragen beendet man im Deutschen normalerweise mit einem Fragezeichen.
anrede = prompt("Möchten Sie mit "Du" oder "Sie" angesprochen werden?");
Syntaxfehler. Das Anführungszeichen vor dem "Du" beendet den String. Wenn Anführungszeichen innerhalb des Strings vorkommen, muss man sie entweder maskieren (in JS durch Voranstellen eines Backslashes), oder man nutzt die Möglichkeit, sowohl einfache als auch doppelte Anführungszeichen zu verwenden. Im Gegensatz zu manchen anderen Sprachen macht Javascript da keinen Unterschied (HTML auch nicht).
Außerdem erlaubt prompt() dem Besucher, wirklich ALLES einzugeben. Er könnte auf diese Frage auch mit "Gartenzwerg" antworten, oder mit einem leeren String. Daher mein Hinweis weiter oben auf ein Formular - hier wären Radiobuttons die richtige Wahl. Oder *eine* Checkbox, die etwa mit "Ich möchte geduzt werden" beschriftet ist.
alert("Ok Sie haben die Anrede ",anrede," ausgewählt")
Syntaxfehler. Die Methode alert() erwartet genau *einen* String als Parameter, nicht mehrere durch Komma getrennte. Wenn du mehrere String zu einem einzigen verketten willst, hilft der Operator + (Plus).
prompt("Ihr name ist ",name," ist dies sofern richtig?");
Dasselbe in Grün mit der Stringverkettung - mit dem Unterschied, dass prompt() zwei Parameter kennt, und der zweite den Defaultwert darstellt, der automatisch ins Eingabefeld eingetragen wird. Außerdem: prompt() fordert und liefert eine _Eingabe_, die du gar nicht benutzt. Und das Wörtchen "sofern" ist in diesem Satz sprachlicher Unfug.
alert("Hallo <strong>",name,"</strong> ich freue mich ",anrede," dich hier begrüßen zu dürfen");
Siehe oben: Das sind wieder mehrere durch Komma getrennte Paramter anstatt eines einzigen. Dazu kommt, dass alert() nur reinen Text ausgeben kann, kein HTML. Die Formatierung durch <strong> hat also hier keine Wirkung, die Tags werden so, wie sie da stehen, im Klartext angezeigt. Damit diese Tags wirken, muss der String im HTML-Kontext ausgegeben werden.
Und mal ganz ehrlich: Entspricht das der Aufgabenstellung "Schreiben Sie eine Funktion ..."? Nicht wirklich.
document.writeln();
Was willst du damit erreichen? Zunächst mal fehlt der Parameter für writeln() - auch ein Syntaxfehler. Und dann wäre das eigentlich die Stelle, wo es Sinn ergibt, den mit Formatierungs-Tags angereicherten String ins HTML-Dokument zu schreiben.
Allerdings gilt für write() und writeln() sinngemäß das gleiche wie für alert() und prompt(): Kann man machen, ist auch so schön einfach, gilt aber als "bad practice" und hat eine Reihe von Einschränkungen (kann z.B. nur verwendet werden, während das Dokument geladen/aufgebaut wird, nicht mehr danach).
So long,
Martin
--
F: Wer waren die ersten modernen Politiker?
A: Die Heiligen drei Könige. Sie legten die Arbeit nieder, zogen teure Klamotten an und gingen auf Reisen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(