Problem: Wenn slideUp() aufgerufen wird, bevor slideDown() beendet wurde, kollidieren die beiden Scripte, keines kann je sein Ende erreichen, die CPU fährt auf 100% und der <div>-Container bleibt zitternd hängen.
Dann muss der Prozess slieDown beendet werden. Einen Tipp hast du ja schon bekommen
Ich hab es schon mit einer for-Schleife in slideDown() probiert, so daß diese Funktion maximal $TARGET-mal durchlaufen wird, das funktioniert aber gar nicht - es passiert dann schlicht nichts.
Dann hast du die Schleife falsch programmiert.
Any hints?
Ja.
function slideDown(whichone,target){
if(document.getElementById){
if(parseInt(document.getElementById(whichone).style.top) < target){
document.getElementById(whichone).style.top = parseInt(document.getElementById(whichone).style.top) + 1 + "px";
myDown = "slideDown('" + whichone + "'," + target + ")";
setTimeout(myDown,1);
}
}
}
Einen timeout mit einer Millisekunde?
Da ist eine Schleife wiklich sinnvoller, da die Funktion mit Sicherheit nicht in einer millisekunde ausgeführt werden kann, zumal getElement.... relativ Zeitintensive Funktionen sind. du solltest vermeiden diese mehrmals aufzurufen.
function slideDown(whichone,target){
if(!document.getElementById) return
var obj = document.getElementById(whichone);
for(var i = parseInt(obj.style.top); i < target; i++)
obj.style.top = i + "px";
}
(ungetestet)
Struppi.