2016-04-30 25 views
1

私はinnerTEXTがノードで動作しないのはなぜですか?

その値を警告、その後getElementsByTagName("title")にしようとしている、それはそれは何も

例返すinnerTextを使用しようとしました:私はinnerHTMLプロパティを使用する場合、それが唯一の作品が、私は理解していない

<script> 
    var req = new XMLHttpRequest(); 
    req.onreadystatechange=function() 
    { 
    if(req.readyState==4 && req.status==200) 
    { 
     titles = req.responseXML.getElementsByTagName("title"); 
     for(i=0; i < titles.length; i++) 
     { 
    alert(titles[i].innerText); 
     } 
    } 

    } 
    req.open("GET","webapp/data",true); 
    req.send(); 
</script> 

をなぜ !

例:

<script> 
    var req = new XMLHttpRequest(); 
    req.onreadystatechange=function() 
    { 
    if(req.readyState==4 && req.status==200) 
    { 
     titles = req.responseXML.getElementsByTagName("title"); 
     for(i=0; i < titles.length; i++) 
     { 
    alert(titles[i].innerHTML); 
     } 
    } 

    } 
    req.open("GET","webapp/data",true); 
    req.send(); 
</script> 
+0

なぜJSONにXMLを変換しませんか?あなたはDOM APIよりも自然に値にアクセスできます。api – evolutionxbox

+0

これらの質問は本当に役に立ちませんでしたか? ['[javascript] innerText'](http://stackoverflow.com/search?q=%5Bjavascript%5D+innerText)検索しましたか? –

+0

@FelixKling私は検索しましたが、innerHTMLがtextContentと同じ値を与える方法がわかりません – Vendetta

答えて

4

innerTextはそれを行うための "古代のInternet Explorer" 方法です。

正しい名前はtextContentです。

+0

それは動作します! innerHTMLは正しく機能しませんか? textContentのみが値を出力する – Vendetta

1

は唯一の最終的なフォールバックとしてinnerTextを使用してtextContent

titles[i].textContent || titles[i].innerText 

で行く、ブラウザに依存します。

https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText
https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent

textContentすべてのブラウザのためのより適切な方法であるとIE9

Element.innerHTMLは、要素のすべてのHTMLコンテンツ文字列を取得するための信頼性の高いクロスブラウザの方法であるからです。 textContentとの違いは、innerHTMLは完全なHTML構造体を文字列に取り込み、Node.textContentは要素(およびその子要素)からノードタイプ3(コンテキストテキスト)を取り出すという点です。

https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
https://developer.mozilla.org/en/docs/Web/API/Node/nodeType

関連する問題