Karsten: Attribute von ID-Selector auslesen durch JS funktioniert nicht

Hallo,
ich muss in meinem JavaScript den style.left auslesen, ohne das ich ihn vorher mit JS geändert habe. Leider klappt dies nicht bzw. erst wenn ich den style.left ändere. In dem Codebeispiel habe ich an die wichtigen Stellen noch einen Kommentar gesetzt um es nochmal näher zu verdeutlichen. Als Browser benutze ich Mozilla bzw. Firebird.
Ich hoffe Ihr könnt mir helfen.

Vielen Dank im Voraus

mfg Karsten

Codebeispiel:

<HTML>
<HEAD>
<TITLE>Drag & Drop</TITLE>
<style type="text/css">
#line{position:relative; left:0; top:0; zindex:1; visibility:visible; clip:rect(0,400,200,0); height:20; width:400; layer-background-image:url('sliderline.gif'); background-image:url('sliderline.gif')}
#marker{position:relative; left:5; top:0; zindex:2; visibility:visible; clip:rect(0,20,25,0); height:25; width:20; layer-background-image:url('slidermarker.gif'); background-image:url('slidermarker.gif')}
#info{position:relative; left:0; top:0; zindex:1; visibility:visible; }
#info2{position:relative; left:0; top:0; zindex:1; visibility:visible; }
</style>

<SCRIPT LANGUAGE="JavaScript">

function init(){
  var left;

left = document.getElementById("marker").style.left;
  document.getElementById("info").innerHTML=left;
  /*   hat nichts aus dem Stylesheet ausgelesen
       und zeigt auf info folglich nichts an.
  */

document.getElementById("marker").style.left=5;
  left = document.getElementById("marker").style.left;
  document.getElementById("info2").innerHTML=left;
  /*  nachdem ich left auf 5 gesetzt habe und erneut
      left auslese, bekomme ich 5 auf info2 angezeigt
  */}

</SCRIPT>
</HEAD>
<BODY onLoad="init()">
<H3>Drag & Drop</H3>
<DIV ID="line"><DIV ID="marker"></DIV></DIV>
<DIV ID="info"></DIV>
<DIV ID="info2"></DIV>
</BODY>
</HTML>

  1. style.left ist ein dezidiertes CSS setzen der position. Zum auslesen gibt es node.offsetLeft bzw. offsetTop ... diese sind abhängig vom offsetParent (welcher angibt auf welche Position sich offsetTop bzw offsetLeft bezieht, bei <div> bzw. <table>'s wichtig)

  2. Moin!

    ich muss in meinem JavaScript den style.left auslesen, ohne das ich ihn vorher mit JS geändert habe. Leider klappt dies nicht bzw. erst wenn ich den style.left ändere. In dem Codebeispiel habe ich an die wichtigen Stellen noch einen Kommentar gesetzt um es nochmal näher zu verdeutlichen. Als Browser benutze ich Mozilla bzw. Firebird.

    Dein CSS ist nicht valide. Invalide CSS-Angaben sollen ignoriert werden. Da du den Marker mit "left:5" positionierst, dürfte der Browser nichts tun - und entsprechend wäre dann auch nichts auszulesen.

    Andererseits: _Wenn_ du den Wert sowieso via CSS festlegst: Warum nicht von diesem Wert ausgehen und damit noch mal initialisieren?

    function init()
    {
      document.getElementById('marker').style.left="5px";
    ...
    }

    Und fertig ist der Lack. Weil: Was anderes als "5px" wirst du dort nie auslesen, selbst wenn es funktionieren würde, dass der Browser die CSS-Angabe dort hineinkopieren würde.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)