Rolf B: Input html js problem

Beitrag lesen

Hallo,

bei mir funzt der Code auch - für einen gewissen Wert von funzen. Es ist ein ziemlich schräger Wert...

Dass das .value() fehlt, führt zu der merkwürdigen Ausgabe, "[object HTMLInputElement]hallo" statt Feldinhalt mit hallo hintendran.

Dass ein click-Handler ohne Anführungszeichen verstanden wird, hat mich aber doch arg verblüfft; da hätte ich Geschrei vom Browser erwartet. Ist aber ganz brav.

Ein paar Punkte für die Checkliste:

  • Alle HTML-Attribute in Anführungszeichen setzen
  • click-Handler MINDESTENS mal als onclick="hallo(event)" notieren. Der Name event ist nicht wählbar. Es ist eigentlich eine globale Variable, die nur während der Eventbearbeitung definiert ist und das sogenannte Event-Objekt enthält. Dieses Objekt gibt Dir ein paar Möglichkeiten während der Event-Behandlung
  • Den event-Parameter in der hallo-Funktion entgegennehmen. Der Parameter muss dort nicht event heißen, du hast freie Namenswahl.
  • Wie schon geschrieben: Den value des Eingabefeldes ermitteln, nicht nur das DOM-Objekt zum Eingabefeld. Dann klappt's auch mit der Ausgabe
  • Am Ende der hallo-Funktion musst Du ggf. auf dem Event-Objekt die preventDefault() Methode aufrufen, sonst wird nämlich der Submit durchgeführt und die Seite lädt neu. Wenn Du das willst - ok. Wenn nicht: preventDefault().

Weitere Verbesserungen:

  • Eigentlich behandelt man den Klick auf den Submit-Button über das submit-Event auf dem form
  • Eigentlich registriert man Events nicht mehr über onxxx-Attribute, sondern über addEventListener. Hier ist nur wichtig, dass der Javascript-Code, der die Registrierung ausführt, das HTML Element finden kann auf dem er etwas registrieren will. Dazu muss die Registrierung entweder am Ende des HTML stattfinden, oder in einem DOMContentLoaded Handler untergebracht werden.

Ach ja. Input-Elemente wollen ein Label haben. Das macht man nicht mit placeholder - das ist nicht von jedem benutzbar

Rolf

--
sumpsi - posui - clusi