parentNode - Null oder kein Objekt

dezerver

Grünschnabel
Ich hab da ein kleines Problemchen in einer While-Schleife.
Ich gehe ab einen bestimmten Punkt, in einem HTML-Dokument, aufwärts alle Elternknoten durch und lasse mir die id's ausgeben. Der Quelltext besteht aus li's und ul's. Nun funktioniert das im FF sehr gut, aber der IE6 mag nicht mitspielen, er sagt mir 'obj.parentNode' ist Null oder kein Objekt.
Das ganze passiert beim window.onload und nachdem ich ein Element per getElementsByName("blubb")[0] anspringe...

Kann ich das per JS abfangen/prüfen?

Danke an die die sich das durchlesen :-)

Das was mich wundert, lasse ich mir das Objekt im FF per alert() ausgeben, sagt mir das alert das es ein [Object HTMLLIElement] ist, was ja auch korrekt ist...

Hier mal ein Quellcodeschnipsel:
window.onload=function() {

objMenu = document.getElementById('menu'); //mein div mit der id "menu" bekommen
objParentNode = document.getElementsByName("91")[0]; //Element mit dem namen "91" suchen
objParentNode = objParentNode.parentNode.parentNode; //das Elternelement vom Elternelement (was ich brauche, weil das li ist was ich anspringen will)
while(objParentNode != objMenu)
{
objParentNode = objParentNode.parentNode.parentNode;
/* hier crasht es */
...
}
}
 
Zuletzt bearbeitet:
Hi,

im IE können nur Elemente über die Methode getElementsByName und somit über ihren Namen angesprochen werden, die tatsächlich ein name-Attribut besitzen (z.B. A, IFRAME, FRAME, BUTTON, INPUT usw.) - mehr bei SelfHTML.

Vielleicht kannst du stattdessen Elemente nach dem Klassenname suchen lassen.

Beispiel:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
<!--
function getElementsByClassName(strClassName){
  var arrHelp = new Array();

  // Suchpattern
  var strPattern = eval("/"+strClassName+"/");

  // Alle Elemente über Wildcard ermitteln
  var arrTags = (navigator.userAgent.toLowerCase().indexOf("msie") != -1) ? document.all : document.getElementsByTagName('*');

  // Alle Elemente durchlaufen
  for(varEntry in arrTags){
    // Fall eine Klasse existiert UND dem Suchkriterium entspricht
    if((arrTags[varEntry].className) && (arrTags[varEntry].className.match(strPattern))){
      // In Klassenarray schreiben
      arrHelp[arrHelp.length] = arrTags[varEntry];
    }
  }

  return arrHelp;
}

window.onload = function(){
  alert(getElementsByClassName("testClass")[0].parentNode);
}
-->
</script>

</head>
<body>
<ul>
  <li><div class="testClass">Der Text</div></li>
  <li><div class="testClass">Der Text</div></li>
</ul>
</body>
</html>
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Hey, danke!
Ich hab total vergessen das der IE sehr streng ist, was den HTML-Standard angeht.
Immer dieses Crossbrowsing-problem, warum sich die nie einigen können.

Jetzt klappt es, mit classen und id's...:)
 

Neue Beiträge

Zurück