WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   layer positionen vertauschen... (http://www.wcm.at/forum/showthread.php?t=60711)

Sesa_Mina 24.06.2002 14:18

layer positionen vertauschen...
 
Hab ne website mit layern die p0, p1, p2, ... p19 heißen.

Diese sind absolut positioniert.

Ich will jetzt mit Javascript ebendiese Layer dazu bringen, zufällig die Positionen zu tauschen.

d.h. alle 3-5 Sekunden tauschen 2 der layer ihre plätze.

bin schon am verzweifeln weil das zeug so wie ichs hab ned funktionieren will. :heul:

wer kann hälfähn?

sagi 24.06.2002 14:43

Post mal den Quelltext, den du bis jetzt schon hast.

mfg

c.

Sesa_Mina 24.06.2002 16:19

folgender code wird bei OnLoad im Body tag aufgerufen.
Er setzt die Positionen der layer bzw. div tags. (direkt im style tag definieren funktioniert zwar auch, kann aber dann nicht ausgelesen werden. darum so umständlich.)
Code:

document.all.p0.style.setAttribute("top","2","false");
document.all.p0.style.setAttribute("left","2","false");
...
document.all.p19.style.setAttribute("top","490","false");
document.all.p19.style.setAttribute("left","488","false");


layerRef ist nur ein string der 'document.all' enthält.
Code:

function MSwapIt() {
        a = Math.round(Math.random() * 19);
        b = Math.round(Math.random() * 19);

        ax = eval(layerRef + '["p'+a+'"].style.getAttribute("left","false")');
        ay = eval(layerRef + '["p'+a+'"].style.getAttribute("top","false")');
        bx = eval(layerRef + '["p'+b+'"].style.getAttribute("left","false")');
        by = eval(layerRef + '["p'+b+'"].style.getAttribute("top","false")');

        eval(layerRef + '["p'+a+'"].style.setAttribute("left",bx,"false")');
        eval(layerRef + '["p'+a+'"].style.setAttribute("top",by,"false")');
        eval(layerRef + '["p'+b+'"].style.setAttribute("left",ax,"false")');
        eval(layerRef + '["p'+b+'"].style.setAttribute("top",ay,"false")');

        window.setTimeout("MSwapIt()",1000);
}

Der code funktioniert ganz gut (Ja, habs doch noch hinbekommen), hat aber den Nachteil das Netscape damit nix anfangen kann.

sagi 26.06.2002 16:09

Zitat:

layerRef ist nur ein string der 'document.all' enthält.
solte der nich "document.all." enthalten ("." am Ende)??

mfg

c.

sagi 26.06.2002 16:15

ich habs!
 
setAttribute und getAttribute werden nur vom IE unterstützt. :(

probier mal:

document.getElementsByTagName("p")[i].style.left = ???;

Sollte mit NS 6.x und IE 5.x funktionieren.

näheres erfährst du bei selfhtml.teamone.de (hoffe der Link stimmt) Da sind alle Objekte, die mit style verwendet werden können aufgelistet.

mfg

c.

käptn 26.06.2002 16:53

jedenfalls ghört ins eval-statement noch ein >>;<<;)

und...

ich hab zwar noch nie mit document.all gearbeitet aber sollte das net so ausschaun:

document.all['irgendwas'].irgendwas ?

sagi 26.06.2002 17:09

Zitat:

sollte das net so ausschaun:

document.all['irgendwas'].irgendwas ?
Stimmt eigentlich. Aber das ist da eher flexibel. Mich haben nur die Anführungszeichen im geposteten Quelltext etwas irritiert.

Zitat:

document.getElementsByTagName("p")[i].style.left = ???;
Das hab ich aus einen Beispeil kopiert. Die Variablen beziehen sich natürlich nicht auf deine Variablen.

aber schaus dir halt bei dem von mir geposteten Link genauer an.

mfg

c.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag