mixmastertobsi: HTML-TAG className

Hallo,

wie kann ich denn die className eines HTML-Tags ändern.

irgendwas.className = "open";

  1. 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).

    --
    Es existiert kein Weg, "für" etwas zu optimieren, sondern nur gegen alles andere.
      (Cheatah)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. 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

      1. @@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'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        1. 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...

          1. @@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.

            --
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      2. 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

        --
        Die letzten Worte des stotternden Beifahrers:
        Frei... frei... frei... freilich kommt da was!!
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. @@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'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      3. 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.

        --
        “All right, then, I'll go to hell.”
  2. Hallo,

    irgendwas.getAttribute('class');  
    irgendwas.setAttribute('class', 'foobar');
    

    vielleicht hilft das?