Me: Hilfe, IE macht unlogische Fehler

Beitrag lesen

Hi Leute,
Frust und Verzweiflung macht sich mal wieder wegen dem Internet Explorer breit. Da will ich mich mit Javascript mehr auseinander setzen und will ein Dynamisches Menü schreiben und bekomme wegen IE schon mit dem Grundbaustein Probleme. Bis jetzt kann das Script die Höhe Div-Balken vergrößern und verkleinern. Zudem Speichert es die Ursprungshöhe, um eine wiederherstellung zu gewährleisten. In Webbrowsern funktioniert es Wunderbar. Nur in dem Virus IE natürlich nicht. Er bleibt IMMER bei 19px stehen, egal bei welchen Script- oder Stylesheetänderungen -.-

Naja, ich kann das Problem nur soweit Eingrenzen, dass er die slideIn()-Funktion nicht komplett ausführt. Ich gebe euch einfach mal das komplette Test-project:

HTML-DOKUMENT:

  
<HTML>  
  
<HEAD>  
 <LINK rel="stylesheet" type="text/css" href="style.css" />  
    <SCRIPT type="text/javascript" src="script.js"></SCRIPT>  
</HEAD>  
  
<BODY>  
  
<p onClick="getHeight('blubb')">GET HEIGHT</p>  
  
<p id="blubb" onClick="check('blubb')"></p>  
  
<p onClick="getHeight('test')">FUNK 2</p>  
  
<DIV id="test" onClick="check('test')"></DIV>  
  
<p onClick="getHeight('test2')">TEST 2</p>  
  
<DIV id="test2" onClick="check('test2')"></DIV>  
  
</BODY>  
</HTML>  

CSS-DATEI:

  
p {  
 text-decoration:underline;  
}  
  
#blubb {  
 width:100px;  
 height:100px;  
 background-color:blue;  
}  
  
#test {  
 width:100px;  
 height:100px;  
 background-color:red;  
}  
  
#test2 {  
 width:100px;  
 height:300px;  
 background-color:green;  
}  

JAVASCRIPT-DATEI: [ALSO DER PROBLEMFALL:]

  
var h  = new Array();  
var s  = new Array();  
var stp = 5;  
  
function check(ID) {  
 alert(document.getElementById(ID).offsetHeight);  
}  
  
function getHeight(ID) {  
 if(s[ID] != "0" && s[ID] != "1") {  
  h[ID] = document.getElementById(ID).offsetHeight;  
  s[ID] = "0";  
 }  
 if(s[ID] == "0") {  
  slideIn(ID);  
 } else {  
  slideOut(ID);  
 }  
}  
  
function slideIn(ID) {  
 var obj  = document.getElementById(ID).style;  
 var ht  = document.getElementById(ID).offsetHeight;  
 var tmp  = ht -stp;  
 if(ht <= "0") {  
  s[ID] = "1";  
 } else {  
  ht   = "0";  
  if(tmp >= "0") ht = tmp;  
  obj.height = ht;  
  setTimeout("slideIn('"+ID+"')",10);  
 }  
}  
  
function slideOut(ID) {  
 var obj  = document.getElementById(ID).style;  
 var ht  = document.getElementById(ID).offsetHeight;  
 var tmp  = ht + stp;  
 var oh  = h[ID];  
 if(ht >= oh) {  
  s[ID] = "0";  
 } else {  
  ht  = oh;  
  if(tmp <= oh) ht = tmp;  
  obj.height = ht;  
  setTimeout("slideOut('"+ID+"')",10);  
 }  
}  

Ok Schuldigung für die lange Ausführung. Aber so habt Ihr wirklich 100% alle Infos. Danke für die Mühe schonmal im Voraus

MFG
    Me