Maddin: Style zuweisen

Hi,

will einer Tabellenzelle einen neuen Style zuweisen, jedoch nicht über die Eigenschaften des sytle - Objekts.

Also nicht:

this.style.backgroundColor = '#eeeee'

Sondern ich brauche unbedingt die Angabe, wie sie in einer Style-Sheet Datei wäre:

Also ungefähr so:

this.style = 'background-color: #e7e7e7'

(funktioniert nicht)

Kennt jemand einen Weg wie man das machen kann?

Danke

Maddin

  1. Hi,

    will einer Tabellenzelle einen neuen Style zuweisen, jedoch nicht über die Eigenschaften des sytle - Objekts.

    Also nicht:

    this.style.backgroundColor = '#eeeee'

    das wäre sowieso ungültig. Die Hexzahl muß 3- oder 6-stellig sein, 5-stellig ist nicht zulässig.

    Sondern ich brauche unbedingt die Angabe, wie sie in einer Style-Sheet Datei wäre:
    this.style = 'background-color: #e7e7e7'

    Warum?

    Kennt jemand einen Weg wie man das machen kann?

    Wenn Dir der Style in der Form 'background-color: #e7e7e7' vorliegt, mußt Du ihn halt entsprechend konvertieren und das Ergebnis dann ggf. in einem geeigneten eval() ausführen.

    cu,
    Andreas

    1. Hi,

      will einer Tabellenzelle einen neuen Style zuweisen, jedoch nicht über die Eigenschaften des sytle - Objekts.

      Also nicht:

      this.style.backgroundColor = '#eeeee'
      das wäre sowieso ungültig. Die Hexzahl muß 3- oder 6-stellig sein, 5-stellig ist nicht zulässig.

      Sorry, hab mich nur vertippt.

      Sondern ich brauche unbedingt die Angabe, wie sie in einer Style-Sheet Datei wäre:
      this.style = 'background-color: #e7e7e7'

      Warum?

      Kennt jemand einen Weg wie man das machen kann?
      Wenn Dir der Style in der Form 'background-color: #e7e7e7' vorliegt, mußt Du ihn halt entsprechend konvertieren und das Ergebnis dann ggf. in einem geeigneten eval() ausführen.

      Ich hab einen String vorliegen, der genau 'background-color: #e7e7e7'
      enthält, aber auch weitere (Style-Sheet) Angaben enthalten kann.

      Ich dachte vielleicht gibt es einen einfachen Weg - ohne aufwendige Konvertierung.

  2. Hallo,

    Sondern ich brauche unbedingt die Angabe, wie sie in einer Style-Sheet Datei wäre:

    Also ungefähr so:

    this.style = 'background-color: #e7e7e7'

    (funktioniert nicht)

    Kennt jemand einen Weg wie man das machen kann?

    Entweder -- wie schon geschrieben -- mittels
    this.style.backgroundColor='#...'
    oder ueber
    this.setAttribute('style','eigenschaft1: wert1; eigenschaft2: wert2;')
    oder ueber die document.styleSheets-Collection (siehe Archiv).

    MfG, Thomas

    1. Hallo,

      Sondern ich brauche unbedingt die Angabe, wie sie in einer Style-Sheet Datei wäre:

      Also ungefähr so:

      this.style = 'background-color: #e7e7e7'

      (funktioniert nicht)

      Kennt jemand einen Weg wie man das machen kann?

      Entweder -- wie schon geschrieben -- mittels
      this.style.backgroundColor='#...'
      oder ueber
      this.setAttribute('style','eigenschaft1: wert1; eigenschaft2: wert2;')
      oder ueber die document.styleSheets-Collection (siehe Archiv).

      Hallo Thomas,

      danke für deinen Beitrag.

      Ich habs probiert:

      <td onMouseOver="this.setAttribute('style','background-color: #ff0000;')">

      funktioniert leider nicht.

      Hingegen:

      <td onMouseOver="this.setAttribute('bgColor','#ff0000')>

      funktioniert.

      Nur dummwerweise brauche ich (zwingend) die Angabe wie in der CSS Datei, da 'background-color: #ff0000;' später aus einem String kommen soll.

      1. Hallo,

        Ich habs probiert:

        <td onMouseOver="this.setAttribute('style','background-color: #ff0000;')">

        funktioniert leider nicht.

        Hast Du es auch unter Mozilla probiert?

        Fuer den IE haette ich noch:
        <td onMouseOver="this.style.cssText='background-color: #ff0000;'"

        Ansonsten waere auch die Ersetzung von Klassen eine Moeglichkeit:
        this.className='neueKlasse'

        MfG, Thomas

        1. Hallo,

          Ich habs probiert:

          <td onMouseOver="this.setAttribute('style','background-color: #ff0000;')">

          funktioniert leider nicht.

          Hast Du es auch unter Mozilla probiert?

          Nein. (Dummerweise verwenden 98,8 % unserer Kunden den IE)

          Fuer den IE haette ich noch:
          <td onMouseOver="this.style.cssText='background-color: #ff0000;'"

          So funktionierts!

          Ansonsten waere auch die Ersetzung von Klassen eine Moeglichkeit:
          this.className='neueKlasse'

          Stimmt.

          Danke nochmal Thomas.

          Maddin

      2. Hallo,

        element.style.cssText = "background-color:#F0F0F0";

        bzw.
        element.style.cssText += "background-color:#F0F0F0";

        Wird aber nicht empfohlen.
        Der "richtige" Weg wäre, die Eigenschaft (bgColor) zu ändern.

        http://www.mozilla.org/docs/dom/domref/dom_style_ref18.html

        Nur dummwerweise brauche ich (zwingend) die Angabe wie in der CSS Datei, da 'background-color: #ff0000;' später aus einem String kommen soll.

        Tja, wenn man etwas Aufwand betreiben möchte, dann könnte man es mappen, sprich den String splitten oder einen regulären Ausdruck drüber laufen lassen, und die entspr. "Eigenschaft" zur Angabe ermitteln.
        Soll heißen, dass bei einem "background-color" dies erkannt wird, und auf die Eigenschaft "bgColor" zugegriffen wird.
        Wie gesagt, mit etwas Aufwand. Du könntest aber dadurch sicherstellen, dass kein Schrott in cssText geschrieben wird.
        Dies könnte z.B. über ein assoz. Array implementiert werden.

        hth
        jan

        1. Korrektur,

          Nicht bgColor, sondern backgroundColor lautet die Eigenschaft.

          element.style.backgroundColor = xxx;
          <

          jan

          1. Korrektur,

            Nicht bgColor, sondern backgroundColor lautet die Eigenschaft.

            element.style.backgroundColor = xxx;
            <

            jan

            Danke Jan,

            du hast natürlich Recht, das cssText nicht die feine englische Art ist. (Vielleicht mach ich mir wirklich den Aufwand und zerlegs manuell)

            Maddin