Denkfehler oder IE Bug?

tobee

Erfahrenes Mitglied
Hallo, ich wollte mit JS eine Animation machen:
Javascript:
<script type="text/javascript">
<!--
function menu(div, h)
{

	var h;

  if(document.getElementById(div))	{
	  document.getElementById(div).style.height = h + 'px';
	}
	
	if(h < 150)	{
	  h++;
	  setTimeout("menu(" + div + ", " + h + ")", 1);
	}

}

</script>

Aber da kommt ein Fehler 'object' ist undefiniert.
Was könnte das heißen?
Ein falscher Doctype?

Tobee
 
Zuletzt bearbeitet:
Bin kein JS Profi aber ich kenn getElementById(String) nur so. Also mit Anführungszeichen.
2. Was passiert dem mit der Varibalen h? Du übergibst deiner Funktion denParameter und deklarierst gleich danach h ?
 
Hi,

wie heißt den dein Div bzw. wie lautet die ID davon?

Javascript:
<script type="text/javascript">
<!--
	function menu(div, h){
		document.getElementById(div).style.height = h + 'px';
   		if(h < 150) {
			h++;
      			setTimeout("menu(" + div + ", " + h + ")", 50);
    		}
	}
	menu("meinDiv", 0);
-->
</script>
<div id="meinDiv">Hallo</div>

Vielleicht hilft das.

MArc
 
Hi!
Setz mal beim div in style für height einen Wert ein (meine Güte liest sich der Satz seltsam...).

Ich hatte neulich auch so ein Problem und danach hat's bei mir funktioniert.
Ich hatte davor den height-Wert in einer CSS-Klasse definiert, aber damit hatte es gar nicht geklappt...
 
Wann genau wird diese Funktion aufgerufen? Direkt beim ladeb, also bevor der Browser weiß, dass es diesen Div gibt, oder erst danach?

Wenn du sie davor aufrust, schreib es mal so:
HTML:
<!-- der ganze HTML und JS Kram -->

<body onload="menu("meinDiv", 0);">
<div id="meinDiv">Hallo</div> 

<!-- der restliche Kram -->
 
Was ich komisch finde ist das meine übergebene Variable div nach dem setTimeout zu einem object wird.
 
So klappt es bei mir

HTML:
<html>
<head>
<script type="text/javascript">
<!--
    function menu(div, h){
        document.getElementById(div).style.height = h + 'px';
     if(h < 150) {
            h++;
            setTimeout("menu('" + div + "', " + h + ")", 50); //du hast hier die ' vergessen
            }
    }
-->
</script>
</head>

<body onload="menu('meinDiv', 0);">
<div id="meinDiv" style="background:red">Hallo</div> 
</body>
</html>
 
Das gibst doch nicht. Für die Aktion müsste ich mich gleich für den DAU des Monats bewerben ;)

Danke nochmal!
 

Neue Beiträge

Zurück