2010-10-20 8 views
8

Titel sollte mein Problem gut beschrieben.Hier geht mein Code.Javascript nodeValue gibt Null

<div id="adiv"><text>Some text</text></div>  
<script type="text/javascript"> 
function vb(){ 
alert(document.getElementById("adiv").firstChild.nodeValue); //returns null 
} 
</script> 
<input type="button" onclick="vb();" value="get"/> 

wo ist das Problem ..?

Antwort

14

Um [fusionierte] Textinhalt eines Elementknotens zu erhalten:

function vb(){ 
var textnode = document.getElementById("adiv").firstChild; 
alert(textnode.textContent || textnode.innerText); 
} 

um Textinhalt eines Textknoten zu erhalten:

function vb(){ 
alert(document.getElementById("adiv").firstChild.firstChild.nodeValue); 
} 
+1

Dank .. wirklich double Firstchild ist ein bisschen seltsam. –

+0

ist es nicht komisch ... firstChild ist und das ersteChild von ist der textnode selbst. – Stumpy7

+0

textContent funktioniert am besten für mich: D Danke! :) –

10

Sie vermissen eine first:

alert(document.getElementById("adiv").firstChild.firstChild.nodeValue); 

(Ich weiß, es klingt komisch, aber das ist, wie Textknoten arbeiten)

+3

Ja sehr seltsam, aber danke! ;) – musefan

+0

Funktioniert nicht in IE 9,8 – Alex

+0

@ user1473206 hast du eine jfiddle oder ähnliches um das zu testen? –

-2

<text> Knoten wird nicht in IE 7 unterstützt.