Wowbagger: CSS: seltsames verhalten des «STYLE» tags im IE4!

Hallo Forumsgemeinde,

bei meinen DHTML-experimenten bin ich auf ein seltsames phänomen gestoßen: Wenn ich stilangaben (CSS) über das <STYLE> tag vornehme, und die zugewiesenen attribute später z.b. per alert() wieder ausgeben möchte, wird beim IE4 *nichts* angezeigt, obwohl die zuweisung funktionierte (der stil also am bildschirm sichtbar wird). Inline (also: style="") funktioniert dagegen reibungslos). Es machte bei mir übrigens keinen unterschied ob ich im <STYLE> tag den stil per # anspreche (also über die ID) oder per . (also über die CLASS angabe). Hierzu folgender source:

<HTML>
<HEAD>
<TITLE>DHTML TEST</TITLE>
</HEAD>

<BODY onLoad="test();">

<STYLE type="text/css"><!--
#xparent {position:absolute;visibility:visible;left:1px;top:1px;width:150px;height:20px;clip:rect(0,150,20,0);background-color:teal;layer-background-color:teal;padding:1;}
#xchild  {position:absolute;visibility:visible;left:1px;top:1px;width:2400px;height:20px;background-color:teal;layer-background-color:teal;padding:1;}
//--></STYLE>

<span id="xparent">
<span id="xchild">
Hallo Welt!
</span>
</span>

<!-- so funktioniert dann die ausgabe per alert() reibungslos:
<span id="xparent" style="{position:absolute;visibility:visible;left:1px;top:1px;width:150px;height:20px;clip:rect(0,150,20,0);background-color:teal;layer-background-color:teal;padding:1;">
<span id="xchild" style="{position:absolute;visibility:visible;left:1px;top:1px;width:150px;height:20px;clip:rect(0,150,20,0);background-color:teal;layer-background-color:teal;padding:1;">
Hallo Welt!
</span>
</span>
-->

<SCRIPT LANGUAGE="JavaScript"><!--  
var pleft= ptop= 0;
NN= (document.layers) ? 1 : 0; IE= (document.all) ? 1 : 0;

function test()
{
if (IE) alert(xparent.style.left);
if (NN) alert(document.xparent.left);
}
//--></SCRIPT>

</body>
</html>

Jetzt könnte man natürlich wieder alles doppelt zuweisen, damit beide browser 'zufrieden' sind (also per <STYLE> *und* inline), aber das kann's doch nicht sein! Oder? Kann ja auch sein, daß ich etwas falsch mache oder einfach etwas übersehen habe?

Hat jemand da draußen schon einmal etwas ähnliches festgestellt?

bis denn dann
/*,*/
Wowbagger

  1. Hallo!

    bei meinen DHTML-experimenten bin ich auf ein seltsames phänomen gestoßen: Wenn ich stilangaben (CSS) über das <STYLE> tag vornehme, und die zugewiesenen attribute später z.b. per alert() wieder ausgeben möchte,

    »»

    Tschuldigung.....aber wozu soll das gut sein?

    Grüße
    Thomas

    1. Hallo!

      bei meinen DHTML-experimenten bin ich auf ein seltsames phänomen gestoßen: Wenn ich stilangaben (CSS) über das <STYLE> tag vornehme, und die zugewiesenen attribute später z.b. per alert() wieder ausgeben möchte,
      »»

      Tschuldigung.....aber wozu soll das gut sein?

      ...nur um zu demonstrieren, daß man den *wert* der attribute nicht mehr richtig auslesen kann, also damit nicht mehr arbeiten kann (alert() diente mir nur dazu, das zu visualisieren!)

      Gruß...
      /*,*/
      Wowbagger

      1. Hallo!

        ...nur um zu demonstrieren, daß man den *wert* der attribute nicht mehr richtig auslesen kann, also damit nicht mehr arbeiten kann (alert() diente mir nur dazu, das zu visualisieren!)

        Aber welche Attribute schreibt man außer CSS-Angaben für ein HTML-Tag separat vom Tag?
        Bitte korrigiere mich, aber: wenn die CSS-Angaben im Header stehen werden diese Angaben gerendert bevor! die Tags geschrieben werden. Wenn also ein Tag im Quelltext gerendert wird hat es bereits die ihm zugewiesene Eigenschaften, die dann logischer Weise nicht mehr im Tag selbst erscheien.
        Wenn du dagegen die CSS-Angaben via style=".." im Tag selbst hineinschreibst, erscheinen diese auch dort, also dein 'alert' kann sie auch lesen und ausgeben.
        Das erscheint mir doch logisch so.

        Aber vielleicht hat jemand eine bessere (oder richtigere) Erklärung!?

        Grüße
        Thomas

        1. Bitte korrigiere mich, aber: wenn die CSS-Angaben im Header stehen werden diese Angaben gerendert bevor! die Tags geschrieben werden. Wenn also ein Tag im Quelltext gerendert wird hat es bereits die ihm zugewiesene Eigenschaften, die dann logischer Weise nicht mehr im Tag selbst erscheien.
          Wenn du dagegen die CSS-Angaben via style=".." im Tag selbst hineinschreibst, erscheinen diese auch dort, also dein 'alert' kann sie auch lesen und ausgeben.
          Das erscheint mir doch logisch so.

          Aber vielleicht hat jemand eine bessere (oder richtigere) Erklärung!?

          wie auch immer, in jedem fall eine interessante theorie. Aber 'mal abgesehen davon: Logisch wäre es - unabhängig von der art der zuweisung eines attributes - daß ich dessen wert anschließend auch wieder auslesen kann um damit zu arbeiten (z.b. left und top für animationen). Also gehe ich als entwickler davon aus, daß die attribute intern im gleichen datenpuffer landen, egal wie bzw. wo ich sie zuvor zuweise...

          Na ja, wollen wir 'mal keine haare spalten, man kann ja das problemchen umgehen (wie zig andere kleine problemchen zuvor auch ;-)). Ist nur wieder ein trauriges beispiel dafür, daß man im grunde ständig dazu gezwungen wird, völlig verqueres kauderwelsch zu programmieren, damit die dinge auf beiden 'großen 4ern' laufen und sowas nervt mich halt tierisch!

          tschau...
          /*,*/
          Wowbagger

          1. Hallo!

            Na ja, wollen wir 'mal keine haare spalten, man kann ja das problemchen umgehen (wie zig andere kleine problemchen zuvor auch ;-)). Ist nur wieder ein trauriges beispiel dafür, daß man im grunde ständig dazu gezwungen wird, völlig verqueres kauderwelsch zu programmieren, damit die dinge auf beiden 'großen 4ern' laufen und sowas nervt mich halt tierisch!

            Das verstehe ich nur allzu gut. "Leider" hast du recht. ;-)

            Grüße
            Thomas