div hoch und runter bewegen klappt nicht

montii

Mitglied
Hallo Community,

folgender Fall: es gibt einen Botton, mit onmousover über den Button wird die function pullmenu aufgerufen und eine ID übergeben. Bei onmouseout das gleich, aber mit anderer ID.
Mit der function soll ein div nach oben und unten bewegt werden. Leider stürzt mir der Browser immer ab, wenn ich die function aufrufe!

hier der Code:

function pullmenu(id){
n = parseInt(document.getElementById('menu_down').style.top);
while(id == '1'){
pulldownvar = setTimeout("document.getElementById('menu_down').style.top = (parseInt(document.getElementById('menu_down').style.top)+1)",20);
}
if((n>=100) && (id==2))
pullupvar=setTimeout("document.getElementById('menu_down').style.top = (parseInt(document.getElementById('menu_down').style.top)-1)",20);
}

kann mir bitte jemand sagen warum das nicht geht. Hab schon das halbe Internet abgesucht und weiß immer noch nicht warum.

Gruß Micha
 
Code:
while(id == '1')
eine while-Schleife läuft solange, wie ihre Bedingung wahr ist.
Erhält die Funktion als id die 1, rödelt der Browser solange/sooft in dieser Zeile:
Code:
pulldownvar = setTimeout("document.getElementById('menu_down').style.top = (parseInt(document.getElementById('menu_down').style.top)+1)",20);
...herum, bis er den Kanal voll hat:)(da sich die id ja nicht ändert und die Bedingung somit immer erfüllt ist.)

Für das, was du vorhast, solltest du
  • das "while" durch ein "if" ersetzen
  • die Positionsänderung sofort(ohne Timeout)durchführen
  • und die Funktion selbst dann per setTimeout() erneut aufrufen
 
dank dir für deine schnelle antwort.

habs jetzt so gelöst.

Code:

function pulldown(){
clearTimeout(pullupvar);
n = parseInt(document.getElementById('menu_down').style.top);
if(n<=150){
document.getElementById('menu_down').style.top = n+1;
pulldownvar=setTimeout("pulldown()",20);
}
}

function pullup(){
clearTimeout(pulldownvar);
n = parseInt(document.getElementById('menu_down').style.top);
if(n>=100){
document.getElementById('menu_down').style.top = n-1;
pullupvar=setTimeout("pullup()",20);
}
}

Gruß Micha
 
Zurück