chrisb
16. April 2010 um 18:42
1
Unabhängig vom konkreten Problem (das mit so wenig Code und ohne sinnvolle Testausgaben kaum nachvollziehbar ist):
Den ersten Parameter für setTimeout als Zeichenkette zusammenzubastlen, ist ziemlich out - das ist Holzhammer-Scripting aus dem vergangenen Jahrtausend.
Solltest du Interesse daran haben, wie man sowas heutzutage vernünftig macht, dann kann ich dir empfehlen, folgenden Artikel mal durch zu arbeiten: aktuell.de.selfhtml.org/artikel/ … framework/
Mogria
17. April 2010 um 09:57
2
window.setTimeout('div_hide(' + id + ', ' + height + ', ' + height2 + ')[b][color=#FF0000];[/color][/b]', 1);
Probier mal hinter der klammer " ) " ein Semilikon " ; " aus … vlt geht’s dann.
Füge mal diese Zeile vor dem Timeout ein:
alert('div_hide(' + id + ', ' + height + ', ' + height2 + ');');
Damit siehst genau du was für ein Befehl nach dem Timeout ausgeführt wird, und du kannst den Fehler vlt beheben.
zvn
17. April 2010 um 10:54
3
Versuch’s mal ohne eval in setTimeout !
function showandhide(id)
{
var height = document.getElementById(id).style.height;
var height2 = height;
height = height.replace('px', '');
var active = 1;
if(active == 0)
{
active = 1;
div_show(id, height, height2);
}
else
{
if(active == 1)
{
active = 0;
div_hide(id, height, height2);
}
}
}
function div_show(id, height, height2)
{
if(height <= height2)
{
document.getElementById(id).style.display = 'block';
height = height + 1;
document.getElementById(id).style.height = height + 'px';
window.setTimeout(function(){div_show(id,height, height2);}, 1);
}
}
function div_hide(id, height, height2)
{
if(height >= 20)
{
height = height - 1;
document.getElementById(id).style.height = height + 'px';
window.setTimeout(function(){div_show(id,height, height2);}, 1);
}
else
{
document.getElementById(id).style.display = 'none';
}
}
Mogria
17. April 2010 um 22:21
4
window.setTimeout("div_hide('"+ id +"', '"+ height +"', '"+ height2 +"');", 1);
So müsste es gehen ^^
Ich hatte das gleiche Problem grad auch gehabt