Elegantere Lösung zum Löschen von Tags mit class="xyz"

Hi,

bisher mache ich es so, dass ich im html etwa

stehen habe, und mit folgendem Javascript-Code

var elements = document.getElementsByClassName("deleteWithJS"); for(var i = 0; i < elements.length; i++) { while (elements[i].hasChildNodes()) { elements[i].removeChild(elements[i].firstChild); } }
diese Elemente entfernt habe. Allerdings kommt mir das ganze schon enorm plump vor, und ich würde es gerne iwie anders lösen, kennt da jmd einen eleganteren weg?

Was willst du jetzt entfernen, nur die Kindelemente der SPANs, oder die SPANs selber?
Derzeit enrfernst du ja nur die Kindelemente.

Und warum willst du sie überhaupt entfernen?
Wie immer: Beschreibe bitte, was du eigentlich erreichen willst - nur dann kann man dir auch Tipps zu bestmöglichen Herangehensweisen geben!

eigentlich will ich die kind-elemente entfernen, ich wusste nur keine bessere lösung, also hab ich (ich weiß, umständlich) spans mit einer gemeinsamen klasse ausenrum gemacht und lösche dann deren kindelemente.
wozu?
wenn kein javascript aktiviert ist, passiert entsprechend gar nicht, IST es aber aktiviert, entferne ich damit bestimmte buttons und textstellen, um zb die bedienung zu erleichtern.
bsp.: schau dir die seite aurachtaler.de/bilder.php mal mit aktiviertem und deaktiviertem javascript an.

mfg
emil :wink2:

Das kannst du auch einfacher haben …

Erstelle im CSS deiner Seite eine Regel, die die entsprechenden Elemente über den Nachfahrenselektor selektiert und ausblendet, bspw.

So lange body nicht diese Klasse hat, passiert nichts, die Input-Elemente mit der Klasse “xyz” werden angezeigt.

Wenn JavaScript verfügbar ist, dann setzt du damit einfach die Klasse “jsEnabled” für das body-Element - und schon sind sie weg.

klasse, genau sowas hab ich gesucht :slight_smile:

Wenn du den ganzen Block mit JS löschen willst und nicht mit CSS ausblenden, dann ist folgender Code sinnvoll:

var elements = document.getElementsByClassName("deleteWithJS"); for(var i = 0; i < elements.length; i++) { elements[i].parentNode.removeChild(elements[i]); }

Ich habe also die möglichkeit, zu löschen, oder auszublenden.
wobei liegen die vor/nachteile?
im prinzip brauche ich die buttons etc nicht mehr, kann sie also permanent löschen. aber geht das iwie langsamer, oder gibts sonstige gründe, sie dohc lieber nur auszublenden??

mfg
emil

verwend jQuery…

Ja, binde unbedingt eine Monster-Library ein, für so einen Kleinkram …!

Wozu braucht man eigentlich das Elternelement um ein anderes Element zu löschen?

Einfacher wäre doch, wenn auch etwas ähnlich dem Folgendem ginge:

Weil es die DOM-Spezifikation so vorsieht

Änderungen am DOM-Baum sind meiner Meinung nach kein Kleinkram, auch wenn die JS-API es so aussehen lässt. Außerdem ist jQuery nicht groß.

Insb. in diesem Fall sind sie vor allem aber absolut unnötig, siehe mein Beispiel von vorher.

jQuery ist hier vollkommen oversized und überflüssig.

Wie die Spezifikation aussieht weiß ich, nur haben sich das ja hoffentlich clevere Leute ausgedacht und für die umständliche Vorgehensweise sollte es einen Grund geben, den wollte ich eigentlich wissen. :wink:

JS-API ist doch auch dazu da, damit die Manipulation nicht allzu kompliziert wird. Wozu also jQuery (26 KB) verwenden, die JS-API allein das Ganze in <200 Bytes schafft?