2016-10-08 8 views
0

私はjavascriptの初心者です。私はノードからテキストを返すためにnodeValueを使用しています。 nullを返すので、firstChild.nodeValueで試しました。しかし、今では言う:ヌルのプロパティ 'のnodeValue' を読み取ることができません ここでは、コードです: -nodeValueがテキストを返さない

<head> 
    <script type="text/javascript" src="get.js"></script> 
</head> 
<body> 
    <ul id="eventsList"> 
    <li>List 1</li> 
    <li>List 2</li> 
    <li><a href="http://www.google.com">Linked item to Google</a></li> 
    <li>List 4</li> 
    </ul> 

</body> 

get.js: -

window.onload=function hear() 
{ 
    var no=document.getElementsByTagName("ul")[0]; 
    var msg=""; 
    if (no.hasChildNodes()) 
    { 
     var son=no.childNodes; 
     var i; 
     for (i=0;i<son.length;i++) 
      msg+=son[i].firstChild.nodeValue; 
    } 
    alert(msg); 
} 

任意の助けをいただければ幸いです。 グラマシー...

+1

'childNodes'は同様にテキストやコメントを返し、すべてではないあなたのchildNodesはお返事のための' firstChild' – adeneo

+0

https://jsfiddle.net/h6nbno73/ – adeneo

+0

ありがとうを持っている....私は一つのことを明確にしたいと思います。 "リスト1"は最初のタグ "li"のfirstChildNodeではありませんか? グラマシー... – americast

答えて

0

childNodesの代わりにchildren のようにする必要があります。

var son=no.children; 

あなたのJS:

var son=no.children; 
     var i; 
     for (i=0;i<son.length;i++){ 

      msg+=son[i].firstChild.nodeValue; 


     } 

動作しないのはなぜ?

childNodesには、例えば、テキストノードとコメント。それらをスキップするには、代わりにParentNode.childrenを使用してください。

+0

サンクス...それは働いた!しかし、私はまだchildNodesが機能していない理由を理解していません。私は、テキストノードとコメントを含めることを望みました。しかし、それは単にヌルを返していた... グラマシー – americast

+0

childNodesは、nodeValue.Soを持たないテキストノードを返します。例外を受け取り、スクリプトの実行を停止します。 –

関連する問題