Script funktioniert nicht => finde Fehler nicht!

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/

    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.

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';
	}
}
window.setTimeout("div_hide('"+ id +"', '"+ height +"', '"+ height2 +"');", 1);

So müsste es gehen ^^
Ich hatte das gleiche Problem grad auch gehabt