Nicolas: Objekt + Properties erst zur Laufzeit zusammensetzen

Hi Leute,

wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen, z.B.

--------------------------------------------------
var obj = document.styleSheets(ss).rules(sr).style;

if i=1
{
  obj = obj + backgroundColor
}
else
{
  obj = obj + Color
}

--------------------------------------------------

Gruesse,
Nicolas

  1. Hi Nicolas,

    wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen?

    Also, in Javascript erhält ein Objekt dadurch eine neue Eigenschaft, dass man dieser Eigenschaft einen Wert zuweist. Wenn Du also in Deinem Skript die Anweisung
      window.document.blubb = 4;
    einbaust, hat Dein document-Objekt dadurch automatisch die Eigenschaft 'blubb'. Was das genau ist, kann ich Dir aber nicht sagen; dafür ist Verona zuständig.

    z.B.

    var obj = document.styleSheets(ss).rules(sr).style;
    if i=1
    {
      obj = obj + backgroundColor

    -> falsch!
    -> einfach
    ->   obj = obj.backgroundColor = null;

    }
    else
    {
      obj = obj + Color

    -> falsch!
    -> einfach
    ->   obj = obj.Color = null;

    }

    Statt 'null' zu verwenden, kannst Du der neuen Eigenschaft (oder auf neudeutsch Property) auch gleich einen anständigen Wert zuweisen.

    HTH,

    Martin

    1. Hallo Martin,

      nein, so wollte ich das nicht lösen.
      Ich möchte aus einem vorhandenen StyleSheet ein bestimmtes Property einer Klasse auslesen und einem anderen Object den Wert dieses Property übergeben.

      Das sieht bisher so aus:

      ---------------------------------
      <script>
      var obj = document.all.tags('TH');

      function GetClassProperty( class_name, prop_name)
      {
       for (ss=0 ; ss < document.styleSheets.length; ss++)
        {
        for (sr=0 ; sr < document.styleSheets(ss).rules.length; sr++)
         {
         if (document.styleSheets(ss).rules(sr).selectorText == class_name)
          {
          var obj = document.styleSheets(ss).rules(sr).style;
          obj = eval(obj + prop_name);
          return obj;
          }
         }
        }
      }

      for (i=0; i < 5; i++)
       {
       if (obj(i).innerText > 0)
        {
        obj(i).runtimeStyle.color = GetClassProperty( '.highlight', '.backgroundColor');
        }
       }
      </script>

      ----------------------------

      Hi Nicolas,

      wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen?

      Also, in Javascript erhält ein Objekt dadurch eine neue Eigenschaft, dass man dieser Eigenschaft einen Wert zuweist. Wenn Du also in Deinem Skript die Anweisung
        window.document.blubb = 4;
      einbaust, hat Dein document-Objekt dadurch automatisch die Eigenschaft 'blubb'. Was das genau ist, kann ich Dir aber nicht sagen; dafür ist Verona zuständig.

      z.B.

      var obj = document.styleSheets(ss).rules(sr).style;
      if i=1
      {
        obj = obj + backgroundColor
      -> falsch!
      -> einfach
      ->   obj = obj.backgroundColor = null;
      }
      else
      {
        obj = obj + Color
      -> falsch!
      -> einfach
      ->   obj = obj.Color = null;
      }

      Statt 'null' zu verwenden, kannst Du der neuen Eigenschaft (oder auf neudeutsch Property) auch gleich einen anständigen Wert zuweisen.

      HTH,

      Martin

  2. Hallo,
    probiere es mal so

    var obj = document.styleSheets(ss).rules(sr).style;

    if (i == 1)
    {
      obj = eval(obj + '.backgroundColor');
    }
    else
    {
      obj = eval(obj + '.Color');
    }

    viele Gruesse
    Thomas

    1. Hallo Thomas,

      das klappt nicht...

      bekomme im IE 5 ne Fehlermeldung, dass das Object undefiniert ist.

      Gruss, Nicolas

      Hallo,
      probiere es mal so

      var obj = document.styleSheets(ss).rules(sr).style;

      if (i == 1)
      {
        obj = eval(obj + '.backgroundColor');
      }
      else
      {
        obj = eval(obj + '.Color');
      }

      viele Gruesse
      Thomas

  3. hi,

    wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen, z.B.

    teste:

    var bgC = document.layers? 'bgColor' : 'backgroundColor';

    // obj.referenz
    function dRefS(num)
    {
    return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))
    }

    Wenn Du jetzt ein div-layer mit der id "ebene0" hast:

    dRefS('ebene0')[bgC] = "red";

    hth

    Gruesse  Joachim

    1. hi,

      achtung, hier den ForumsEndBegrenzerZeilenumbruch rausnehmen !!!

      return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))

      Gruesse  Joachim

      1. Moin,

        achtung, hier den ForumsEndBegrenzerZeilenumbruch rausnehmen !!!

        return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))

        Warum machst du nicht einfach dein Fenster groesser? ;)
        Das Forum begrenzt gar nichts ;) Das ist ein Feature von HTML.

        Viele Gruesse,

        n.d.p.

        1. hi,

          Warum machst du nicht einfach dein Fenster groesser? ;)
          Das Forum begrenzt gar nichts ;) Das ist ein Feature von HTML.

          hihi, bin ich *...* Bin halt die 70-Zeichen aus dem usnet gewoehnt ;-)

          Danke fuer die Erhellung

          Gruesse  Joachim

    2. Hallo Joachim,

      jo, jetzt gehts.

      Danke und Grüsse,
      Nicolas

      hi,

      wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen, z.B.

      teste:

      var bgC = document.layers? 'bgColor' : 'backgroundColor';

      // obj.referenz
      function dRefS(num)
      {
      return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))
      }

      Wenn Du jetzt ein div-layer mit der id "ebene0" hast:

      dRefS('ebene0')[bgC] = "red";

      hth

      Gruesse  Joachim