Glory: obj.style.left liefert leeren String

Hallo.
Ich habe dieses CSS:

  
#meinElement  
{  
 position: relative;  
 top: 200px;  
 left: 400px;  
 width: 200px;  
 height: 120px;  
}  

und dazu folgendes Javascript:

  
function irgendwas(obj)  
{  
 alert(obj.style.left);  
}  

Wenn ich nun die Seite und die Funktion irgendwas() mit einem Zeiger auf das Objekt mit der ID "meinElement" aufrufe, dann erhalte ich mit alert() nichts -> einen leere Zeichenkette. Die Fehlerkonsole sagt nichts und es sollte ja auch alles korrekt sein. Wenn ich dem Objekt aber vor dem alert() einen Abstand zuweise ("obj.style.left = '123px';"), gibt das alert() auch den entsprechenden Wert aus. Warum tut es das denn vorher nicht? Und wie komm ich nun an den Abstand nach links oder oben heran?

Um Hilfe bettelnd,
Glory

  1. Hallo Glory,

    Du kannst mittels JavaScript nicht auf den Code Deiner (externen) CSS zugreifen. Du mußt die Formatierungen direkt über das style-Attribut an das entsprechende Objekt binden, dann gehts auch.

    Mit freundlichem Gruß
    Micha

  2. Hi,

    Warum tut es das denn vorher nicht? Und wie komm ich nun an den Abstand nach links oder oben heran?

    Ich hatte mal das gleiche Problem. Du kannst die Style-Attribute mit ".stlye" erst auslesen, wenn du sie einmal gesetzt hast.

    Eine Lösung bietet ".getComputedStyle", bzw. ".currentStyle". Näheres dazu siehe im verlinkten Thread.

    mfG,
    steckl

  3. alert(obj.style.left);

    Du kannst do nur die Werte auslesen die du gesetzt hast, die Position ermittelst du mit den offset Werten.

    Also obj.offsetLeft und evtl. noch die Werte des parent Elementes dazu rechnen https://forum.selfhtml.org/?t=161465&m=1050372

    Struppi.

  4. Danke für eure Hilfe :)
    Ich hab den Weg in steckls Problemthread genommen.

    Dankend,
    Glory