Chris: DOM :: Wie aktuelle Layerposition ermitteln

Ich benutze folgende Funtion, um unter NS 6 die aktuelle Position eines DIVs zu ermitteln:

var myDiv = document.getElementById("Div1");
var Position = parseInt(myDiv.style.left);
alert(Position);

Wieso gibt der Browser als Alert statt einer Pixelangabe immer NaN (Not a number) aus??? Mit diesen Werten kann man ja nicht weiterarbeiten!

Weiss vielleicht jemand einen Rat???
Danke im Voraus

Chris

  1. Hallo, <-- guck mal, eine Begruessung,

    Ich benutze folgende Funtion, um unter NS 6 die aktuelle
    Position eines DIVs zu ermitteln:

    var myDiv = document.getElementById("Div1");
    var Position = parseInt(myDiv.style.left);
    alert(Position);

    Wieso gibt der Browser als Alert statt einer Pixelangabe
    immer NaN (Not a number) aus??? Mit diesen Werten kann man
    ja nicht weiterarbeiten!

    Wurde 'left' als CSS-Eigenschaft schon gesetzt? Oder ist die
    noch nicht vorher gesetzt worden, entweder ueber JS oder ueber
    CSS? *Sicher*, dass die Schreibweise richtig ist? JS ist
    Case-Sensitive!

    Gruesse,
     CK

  2. habe folgende JS-Function kürzlich geschrieben...
    damit bekommst du normalerweise die

    function getYLayer(name)
       {

    if ((obj=findObj(name))!=null)
        {

    if (obj.style)
         {
         obj=obj.style;
         }

    r1 = obj.top;
        r2 = r1.substr(0,r1.length-2);
        return r2;
        }

    dazu brauchst dann noch die function

    function findObj(n, d) { //v4.0
      var p,i,x;  if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && document.getElementById) x=document.getElementById(n); return x;
    }

    die kommt ausm DW ...

    1. habe folgende JS-Function kürzlich geschrieben...
      damit bekommst du normalerweise die Position..
      die hinteren 2 Zeichen schneide ich ab, damit ich ne Zahl erhalte und nicht den blöden string mit dem "px" dabei.
      Damit auch klar ist, dass es ne Zahl sein soll, wird das +1-1 dazu gesetzt. Ansonsten kanns passieren, dass Du, wenn Du zum Ergebnis was dazu addierst deine andere Zahl in nen String umgewandelt wird und du 2 Strings aneinander hängst, was dann bei weiterer Verwendung dieser "Summe" zu recht lustigen ergebnissen führen kann...
      (zB. dass du dann aus 200+50 nicht 250 sondern 20050 erhältst...)

      function getXLayer(name)
         {

      if ((obj=findObj(name))!=null)
          {

      if (obj.style)
           {
           obj=obj.style;
           }

      r1 = obj.left;
          r2 = r1.substr(0,r1.length-2) -1+1;
          return r2;
          }

      dazu brauchst dann noch die function

      function findObj(n, d) { //v4.0
        var p,i,x;  if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
          d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
        if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
        for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
        if(!x && document.getElementById) x=document.getElementById(n); return x;
      }

      ich geb dabei zu, dass ich die findObj aus DW-Seiten geklaut hab...