DOM :: Wie aktuelle Layerposition ermitteln
Chris
- javascript
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
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
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 ...
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...