Struppi: Funktionsaufrufe werden ignoriert

Beitrag lesen

Hi. ich und mein Menü schon wieder.

Die Patzer von letztens sind ausgemerzt. Jetzt habe ich das Problem, dass in meinem Hauptscript bei den Fallunterscheidungen die ersten zwein Aufrufe der Funktion ignoriert werden.

Hier die gesamte Skriptdatei:

var timer=4;
var jump=5;
var ams="leer";
var layer_bak = "leer";
var apos_bak = 0;
var epos_bak =0;

function hide(layer){
document.getElementById(layer).style.visibility = "hidden";
}

function show(layer){
document.getElementById(layer).style.visibility = "visible";
}

function move (layer,apos,epos) { /*Bewegung der Ebene*/
document.getElementById(layer).style.top=apos;
apos+=jump;
 layer_bak=layer;
 apos_bak=apos;
 epos_bak=epos;
if(apos<=epos) setTimeout("move(layer_bak,apos_bak,epos_bak)",timer);
}

[....]

move ('bottom1',125,25);
  move ('top2',225,125);
  move ('top3',250,150);

Da ich eh kein freund von diesen Menüs sind, die dann alle Links einer Seite in ein Dokument packen um angeblich leichter navigieren zu können (du solltest dir eine Verzeichniss struktur überlegen, das die Navigation intuitiv ermöglicht), les ich mir nicht alles durch.

Aber was mir auffällt an dem obigen Schnipsel.
du rufst die Funktion move auf, speicherst darin drei Variabeln um dann wieder per timeout die Funktion move aufzurufen. So weit so schlecht. Aber weiter unten rufts du die Funktion dreimal auf, dass bedeutet 3 Aufrufe und dreimal werden die globalen Variabeln layer_ba, apos_bak, epo_bak gesetzt, dann wir dreimal der timergesetzt.

Ich glaube nicht das das ist was du willst. Das was du erreichen möchtest ist ungleich schwieriger. Du musst mit Arrays arbeiten, Objekten und diese mit dem Timer irgendwie überprüfen.

Das ist alles ein sehr müßiges Unterfangen was du da vorhast, nur wegen einem Menü, das sich viel einfacher mit HTML und ein bisschen Wartezeit erledigen liesse.

Struppi.