Der Martin: querySelector oder getElementById nicht zwingend notwendig?

Beitrag lesen

Moin,

Ich war überrascht, dass dies überhaupt geht, vor vielen Jahren wars nicht so.

Beispiel:

<!DOCTYPE html>
<html><body>

<h1>This is heading 1</h1>
<h2>This is heading 2</h2>
<h3 id="x">This is heading 3</h3>
<h4>This is heading 4</h4>
<h5>This is heading 5</h5>
<h6>This is heading 6</h6>

<button onclick="alert(x.innerHTML);">Result</buttton>

</body>
</html>

Elemente mit einer ID erzeugen ein gleichnamiges DOM-Elementobjekt als Eigenschaft des window-Objekts. Ich habe jetzt auf die Schnelle kein Zitat aus irgendeiner Spec zur Hand, aber das ist schon gefühlte 1000 Jahre so. Das war schon eine umstrittene Alternative zum proprietären document.all, das AFAIR mit dem IE4 eingeführt wurde - also vor rund 20 Jahren.

Mal abgesehen davon ob guter/schlechter Stil, ist diese einfache Art der Referenzierung überhaupt erlaubt, oder doch nur eine temporäre Möglichkeit.

Es ist wohl erlaubt, aber ich finde das Konzept an sich fragwürdig, denn durch die Injektion beliebig benannter Objekte kann es Namenskonflikte mit anderen, vordefinierten Eigenschaften des window-Objekts geben. Viel Spaß bei der Fehlersuche. 😉

Live long and pros healthy,
 Martin

--
Es soll vorkommen, dass die Nachkommen mit dem Einkommen ihrer Vorfahren nicht auskommen.