Siri: FF: firstChild-Fehler in LI

Hallo,

der alerts nachfolgenden JS liefert im FF10 für labelSpan.nodeName den Wert #text zurück. Der IE sagt SPAN... Warum? Ich möchte ja den Wert SPAN zurückbekommen. Ist das ein Bug? Kann ich das umgehen?

Grüße
Siri

<a href="#" onclick="testLi(); return false;">Test</a>  
  
<ul id="tree2">  
	<li id="li1234">  
		<span>cache2</span>  
		<ul>  
			<li>delete_me.txt2</li>  
		</ul>  
	</li>  
</ul>	  
<script>
	function testLi() {  
	  
		var testLi = document.getElementById("li1234");  
		var labelSpan = testLi.firstChild;  
		alert(testLi.nodeName+"|"+labelSpan.nodeName+"|"+labelSpan.nodeType+"|"+labelSpan.data);  
	}

</script>

  1. Tach!

    der alerts nachfolgenden JS liefert im FF10 für labelSpan.nodeName den Wert #text zurück. Der IE sagt SPAN... Warum?

    Der FF sieht nach dem li-Element zunächst einen Textknoten, bestehend aus dem Zeilenumbruch und dem Tab (oder den Leerzeichen). Der IE ignoriert diesen nur Whitespace enthaltenden Textknoten.

    Ich möchte ja den Wert SPAN zurückbekommen. Ist das ein Bug? Kann ich das umgehen?

    Lass den Textknoten weg (span direkt nach dem li notieren) oder schließ die dich nicht interessierenden NodeTypes von der Verarbeitung aus. Dann allerdings reicht ein firstChild allein nicht. Ich würde dann durch die Child-Elemente iterieren und am ersten passeden Element abbrechen.

    dedlfix.

    1. Hallo,

      Der FF sieht nach dem li-Element zunächst einen Textknoten, bestehend aus dem Zeilenumbruch und dem Tab (oder den Leerzeichen). Der IE ignoriert diesen nur Whitespace enthaltenden Textknoten.

      So ein Mist!

      Lass den Textknoten weg (span direkt nach dem li notieren) oder schließ die dich nicht interessierenden NodeTypes von der Verarbeitung aus. Dann allerdings reicht ein firstChild allein nicht. Ich würde dann durch die Child-Elemente iterieren und am ersten passeden Element abbrechen.

      Dann werd ich wohl iterieren müssen... Danke!

      Grüße
      Siri

    2. Hallo dedlfix,

      Lass den Textknoten weg (span direkt nach dem li notieren) oder schließ die dich nicht interessierenden NodeTypes von der Verarbeitung aus. Dann allerdings reicht ein firstChild allein nicht. Ich würde dann durch die Child-Elemente iterieren und am ersten passeden Element abbrechen.

      ich würde hier getElementsByTagName("span")[0] nehmen. Die "Child-Methoden" vermeide ich, wenn möglich, aus eben diesen Gründen.

      Gruß, Jürgen