Hallo zusammen,
Ja, mit
querySelector()
/querySelectorAll()
hat man ein einheitliches Interface für alle Fälle.
getElementById()
ist so weit verbreitet, dass es Erwähnung verdient, wobei gesagt werden muss, dassgetElementById('a')
dasselbe tut wiequerySelector('#a')
.Das trifft auf die anderen Methoden nicht zu; die könnte man unter Sonstiges verbuchen. Einfach sagen, dass es weitere Methoden gibt (
getElementsByTagName()
könnte man dabei namentlich erwähnen, muss man aber nicht), die man aber nicht mehr braucht, da man ja jetztquerySelector()
/querySelectorAll()
hat.
Kann man für Neueinsteigende so machen, wobei die Erwähnung von getElementById()
, getElementsByName()
, getElementsByClassName()
, getElementsByTagName()
und (in speziellen Kontexten) getElementsByTagNameNS()
durchaus nützlich sein kann, wenn man es etwa mit älterem Code zutun hat und Anpassungen durchführen möchte.
Erwähnenswert ist aber, dass querySelector()
/ querySelectorAll()
wie andere Elements-Methoden nicht nur auf dem Document- sondern auch auf dem Element-Interface wirken können:
<ul id="spezielle_liste">
<li>Text</li>
<li>Text</li>
<li>Text</li>
</ul>
<script>
const ul = document.querySelector("#spezielle_liste");
const ul_li = ul.querySelectorAll("li");
console.log(ul_li.length); // 3
</script>
Interessanterweise klappt das mittlerweile sogar bei AJAXifizierten Inhalten, also eingelesenen XML-Strukturen. Dort war bisher xmlroot.getElementsByTagName("xmlelement") zielführend(er).
Grüße,
Thomas