dedlfix: Unverständlicher Javascript-Fehler wegen null

Beitrag lesen

Tach!

Die Zeile 91 ist die, in die das Programm eigentlich gar nicht hineinlaufen kann:

90 if ( typeof document.getElementById( "XMLHttpRequest_gesendet" ) !== "null" ) {
91   document.getElementById( "XMLHttpRequest_gesendet" ).innerHTML = url;
92 }

Warum soll es nicht dahinlaufen können? Welchen Wert gibt denn typeof document.getElementById( "XMLHttpRequest_gesendet" ) zurück? Hast du das nicht geprüft und einfach blind angenommen, dass da "null" zurückkommt? Die Ausgabe ist "object" und damit für deinen Fall unbrauchbar. null ist kein Typ sondern ein Wert.

Es stellt also fest, dass ein Objekt ungleich null ist, um dann zu protestieren, dass es doch null ist. Welchen Sinn macht das?

Das ist dein Wunsch, aber nicht das was du geschrieben hast. Wenn du auf null prüfen möchtest, musst du das direkt tun, ohne typeof.

Besser fände ich aber

const XMLHttpRequest_gesendet = document.getElementById("XMLHttpRequest_gesendet");
if (XMLHttpRequest_gesendet) {
  XMLHttpRequest_gesendet.innerHTML = url;
}

Es reicht auf falsy zu prüfen. document.getElementById() gibt entweder ein Element oder null zurück, womit das Ergebnis eindeutig truthy oder falsy ist und eine einfache boolesche Auswertung reicht.

Zudem muss man den Browser nicht zweimal durch das DOM schicken (selbst wenn er das eventuell wegoptimiert und einen Index für die IDs verwendet).

dedlfix.