1unitedpower: Elementliste einer Node erzeugen

Beitrag lesen

Ja, leider. Obwohl es doch so logisch erschien und z. B. im DOM-Parser von PHP so realisiert ist. Wäre ja noch schöner, wenn JavaScript das genauso machen würde :-O

Die DOM-Implementiereung der JavaScript-Engines halten sich soweit es geht an die W3C-/WHATWG-Standards. Dem PHP-Entwicklerteam fehlen vermutlich schlicht die Kapazitäten, um so ein Unterfangen erfolgreich umzusetzen - deshalb gibt es in PHP nur die entkoffeinierte Version des DOM. Aber getElementsByTagName ist auch da keine Methode von DOMDocumentFragment.

Unabhängig davon hatte dein Code einen weiteren logischen Fehler:

var scriptnodes = mynode.getElementsByTagName('script');
for (idx = 0; idx < scriptnodes.length; idx++) {
    mynode.removeChild(scriptnodes[idx]);
}

document.getElementsByTagName gibt eine "lebendige" HTMLCollection zurück, das heißt, dass die Länge scriptnodes.length bei jedem Schleifendurchlauf verringert wird und die Schleife somit nicht über alle Einträge iteriert hätte. Bei querySelectorAll bekommst du stattdessen eine "statische" NodeList. Da hast du also schon mal zwei Fliegen mit einer Klappe geschlagen 😉