Java script if Abfrage zur Überprüfung eines leeren Feldes?


08.09.2021, 15:05

Mir ist noch eine Variante aufgefallen :

if (Mailadresse.value == " ") ...

Kann mir bitte jemand erklären warum das auch nicht funktioniert?

4 Antworten

Der Code ist in allen Situationen falsch.

getElementsByName gibt eine NodeList zurück, sprich ein Array mit mehreren Elementen, nicht ein einzelnes Element.

https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName

Die Property value gibt es überhaupt nicht. Das Ergebnis ist also undefined. Der einfache null Vergleich mit == statt === gibt bei undefined ein true zurück, das ist der einzige Grund warum das geht.

Sprich dein Feld ist in Mailadresse[0] drin. Natürlich könntest du z.B. auch document.querySelector("[name='Mailadresse']") nutzen oder eine Id vergeben und getElementById nutzen oder querySelector mit der entsprechenden Id oder Klasse.

Der Valuevergleich wäre dann entweder der Leerstring oder auf length === 0.

Leicht testen kannst du so Sachen einfach in der Konsole des Browsers

Man kann aber auch einfach das required Tag in HTML setzen, sofern man keine Fancy eigene Überprüfung machen möchte und als type sogar email mit einen entsprechenden Pattern:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

zitrushaeschen 
Beitragsersteller
 09.09.2021, 18:05

Uff, gibt es da viel zu wissen. Danke für die interessanten Tipps :) Es ist immer sehr hilfreich neue Dinge gezeigt zu bekommen.

apachy  09.09.2021, 18:08
@zitrushaeschen

Am einfachsten ist es sich einmal mit den Entwicklertools des Browsers auseinander zu setzen. Dann kommst du meist fix an die Lösung oder merkst wenigstens was los ist, wenn du da via console.log prüfst was wirklich in deinen Daten drin steht.

Richtiges Debugging funktioniert da natürlich auch.

0 Ist ein Integer. Vermutlich wird in JS null nicht als integer gewertet, wodurch das dann nicht geht

Ein Feld mit dem Inhalt 0 ist nicht leer.
Also trifft die Bedingung in Variante 2 nur dann zu, wenn eine 0 eingetragen wurde, sonst nicht.

if (Mailadresse.value == " ") fragt auf ein Leerzeichen ab. Das ist auch was anderes als gar kein Inhalt.
if (Mailadresse.value == "") wäre wiederrum etwas anderes, das wäre ein leeres String-Objekt. Das ist auch nicht das selbe wie null könnte aber hier den gleichen Effekt erzielen.

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

zitrushaeschen 
Beitragsersteller
 09.09.2021, 18:08

Danke für die Mühe mir auf meine nachträglich ergänzte Frage auch noch zu antworten. War sehr hilfreich