HTML-TAG className
mixmastertobsi
- javascript
Hallo,
wie kann ich denn die className eines HTML-Tags ändern.
irgendwas.className = "open";
Hi,
wie kann ich denn die className eines HTML-Tags ändern.
ist das eine Frage. (Tipp: Fragen beendet man in der Regel mit einem '?')
Wenn ja, verstehe ich die Frage bzw. ihren Sinn nicht.
irgendwas.className = "open";
Ja, genau so. Was ist jetzt unklar?
Ciao,
Martin
PS: Achte bitte auf den Umterschied zwischen Tag, Element, Attribut und Eigenschaft (property).
Hallo,
die frage ist, wie kann ich den HTML-TAG überhaupt ansprechen.
Den Body-Tag kann ich zum Beispiel über
body.className = "irgendwas";
ansprechen
html.className = "irgendwas";
geht aber nicht
@@mixmastertobsi:
nuqneH
Den Body-Tag kann ich zum Beispiel über
body.className = "irgendwas";
ansprechen
Kannst du? Ich nicht. Was tust du, damit du das kannst?
Den body-Knoten im DOM erreicht man mit document.body
.
html.className = "irgendwas";
Weil das html-Element als document.documentElement
im DOM repräsentiert ist.
Oft will man aber nicht sämtliche Klassen eines Elements überschreiben, sondern gezielt einzelne hinzufügen oder wegnehmen. Wie das (in modernen Browsern) geht, hab ich neulich erst aufgeschrieben.
Qapla'
was ich konkret möchte - ich möchte, dass in der mobilen-iphone-variante, keine scrollbar verfügbar ist, wenn das manü geöffnet wurde... - overflow:hidden;
das skript muss also den className im html-tag ändern...
@@mixmastertobsi:
nuqneH
das skript muss also den className im html-tag ändern...
Dann mach das doch. Wie das geht, hab ich dir doch gerade gesagt.
Qapla'
PS. Nicht im html-Tag. Der HTML-Quelltext ist längst gegessen; mit JavaScript manipulierst du das DOM.
Hi,
die frage ist, wie kann ich den HTML-TAG überhaupt ansprechen.
das Element, nicht den/das Tag.
Den Body-Tag kann ich zum Beispiel über
body.className = "irgendwas";
ansprechen
Ja, das ist ein Sonderfall. Der Regelfall ist eher, dass du das gewünschte Element im DOM erst finden musst, eine sogenannte Referenz (eine Art Zeiger) auf das Element brauchst.
Dazu gibt es unterschiedliche Ansätze, je nachdem, um was für ein Element es geht.
Bilder und Links werden beispielsweise automatisch in den Collections document.images und document.links enumeriert (aufgelistet), so dass man etwa mit document.images[2]
das dritte Bild im Dokument ansprechen kann (gezählt wird anständig mit 0 beginnend).
Formularelemente können mit document.forms[formularname].elements[controlname]
oder kürzer mit document.formularname.controlname
angesprochen werden (letzteres nur, wenn formularname und controlname auch gültige Javascript-Bezeichner darstellen).
Und dann gibt es noch die allgemeinen DOM-Suchmethoden wie getElementById(), getElementsByTagName(), getElementsByName(), getElementsByClassName() - vielleicht hab ich noch eine vergessen.
html.className = "irgendwas";
geht aber nicht
Nein. Aber document.getElementsByTagName('html')[0].className = 'foo';
geht prima.
So long,
Martin
@@Der Martin:
nuqneH
das Element, nicht den/das Tag.
Den Elementknoten, nicht das Element.
Und dann gibt es noch die allgemeinen DOM-Suchmethoden wie getElementById(), getElementsByTagName(), getElementsByName(), getElementsByClassName() - vielleicht hab ich noch eine vergessen.
Oder auch zwei: querySelector() und querySelectorAll().
Qapla'
Meine Herren!
die frage ist, wie kann ich den HTML-TAG überhaupt ansprechen.
TAGs kannst du garnicht ansprechen. Du sprichst DOMElemente! an.
Den Vorgang bestimme Elemente aus dem DOM-Baum herauszupicken oder sich dadurch zu hangeln nennt man Traversieren.
Die DOM-API bietet dafür verschiedene Methoden an:
document.getElementById()
holt ein Element anhand der ID
document.getElementsByClassName()
holt Elemente (Plural!) anhand eines Klassennamens
document.getElementsByTagName()
holt Elemente anhand der Tagnamen.
document.querySelector()
holt das erste Element, das auf einen CSS-Selektor passt
document.querySelectorAll()
holt alle Elemente, die auf den Selektor passen.
Hallo,
irgendwas.getAttribute('class');
irgendwas.setAttribute('class', 'foobar');
vielleicht hilft das?