Christian S.: Überprüfen ob CSS Klasse existiert

Hi,

kann ich in JavaScript irgendwie überprüfen ob eine CSS Klasse existiert?

ich habe also ein Element, dem ich einen Klassennamen zuweise. Wenn diese Klasse nicht existiert möchte ich standard styles setzen.

geht das etwa so:?

el.className = "Test";

if(el.currentStyle.cssText == "")
{
//eigene styles setzen
}

currentstyle und cssText sind leider nur IE properties. (evtl auch runtimeStyle verwenden).

Gehts auch anders?

Gruß
Christian

  1. Hallo,

    ich sehe da zwei Möglichkeiten:

    1. Über document.styleSheets alle eingebundenen Stylesheets durchlaufen und schauen, ob in einem Selektor die fragliche Klasse vorkommt.
    2. über getComputedStyle bzw. currentStyle auslesen, ob die Klasse ihre Wirkung entfaltet hat. Dazu musst du aber eine Eigenschaft aus der Klasse kennen / fest ins JavaScript programmieren und als Indikator verwenden.

    Zu document.styleSheets und getComputedStyle findest du viel im Forumsarchiv.

    Vielleicht solltest du dir überlegen, wie du das Problem der fehlenden CSS-Klasse anders handhabst (wieso tritt es überhaupt auf?), denn die obigen Lösungen sind weder elegant noch zuverlässig.

    Mathias

  2. Hi Christian!

    kann ich in JavaScript irgendwie überprüfen ob eine CSS Klasse existiert?

    Du kannst überprüfen, ob ein bestimmtes Attribut gesetzt ist.

    ich habe also ein Element, dem ich einen Klassennamen zuweise. Wenn diese Klasse nicht existiert möchte ich standard styles setzen.

    Beachte, dass Besucher ohne Javascript nicht vernachlässigt werden.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hi Hopsel!

      kann ich in JavaScript irgendwie überprüfen ob eine CSS Klasse existiert?
      Du kannst überprüfen, ob ein bestimmtes Attribut gesetzt ist.

      Und hier der richtige Link: http://de.selfhtml.org/javascript/objekte/all.htm#get_attribute

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. Hi Hopsel!

        kann ich in JavaScript irgendwie überprüfen ob eine CSS Klasse existiert?
        Du kannst überprüfen, ob ein bestimmtes Attribut gesetzt ist.

        Und hier der richtige Link: http://de.selfhtml.org/javascript/objekte/all.htm#get_attribute

        MfG H☼psel

        Das scheint sich nur auf Element Attribute zu beziehen. und der andere Link (style.getAttribute) scheint nur im IE zu funzen.

        Gruß
        Christian

        1. Hi Christian!

          Und hier der richtige Link: http://de.selfhtml.org/javascript/objekte/all.htm#get_attribute
          Das scheint sich nur auf Element Attribute zu beziehen.

          "class" ist ja auch eine Attribut eines HTML-Elements. Und den Inhalt fragst du mit getAttribut() ab.

          MfG H☼psel

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
          1. Hallo,

            die Frage war glaube ich nicht, ob ein Element eine Klasse hat, sondern es steht fest, dass ein Element eine Klasse hat, die Frage ist nur, ob dieser Klasse in einem Stylesheet auch Eigenschaften zugewiesen werden.

            Mathias

  3. Moin!

    kann ich in JavaScript irgendwie überprüfen ob eine CSS Klasse existiert?

    Sowas sollte doch durch entsprechende Herstellung der CSS-Datei sicherzustellen sein.

    ich habe also ein Element, dem ich einen Klassennamen zuweise. Wenn diese Klasse nicht existiert möchte ich standard styles setzen.

    Dein Problem klingt überdies so, als sollte es eher mit CSS-Mitteln, als mit Javascript gelöst werden.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."