2017-04-08 39 views
0

私はエントリーレベルのjavascriptコースに入っていて、Document Object Modelセクションを勉強していますが、以下のスクリプトが価値がない理由を理解しようとしています。少し?表示された値(DOM)が表示されない理由

<!DOCTYPE html> 
 
<html> 
 

 
<body id="bdy"> 
 

 
    <h1 id="id00">Test 1</h1> 
 
    <h1 id="id01">Test2</h1> 
 
    <p id="id02"></p> 
 

 
    <script> 
 
    document.getElementById("id02").innerHTML = document.getElementById("bdy").childNodes[0].nodeValue; 
 
    </script> 
 

 
</body> 
 

 
</html>

+0

何が動作していないのですか? –

+3

子ノードはあなたが思うものではないためです。 – mplungjan

+0

最初の要素は、 '.firstElementChild'または' .children [0] ' –

答えて

1

子ノードは、あなたがそれだと思うものではありませんので。あなたは空のtextnodesをスキップする必要があり、あなたはおそらくもっとここノード

読むのtextContentにアクセスしたい:https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace_in_the_DOM

そして、ここで:nodeValue vs innerHTML and textContent. How to choose?

for (var i = 0; i < document.getElementById("bdy").childNodes.length; i++) { 
 
    console.log(i, document.getElementById("bdy").childNodes[i].textContent) 
 
}
<body id="bdy"> 
 

 
    <h1 id="id00">Test 1</h1> 
 
    <h1 id="id01">Test2</h1> 
 
    <p id="id02"></p> 
 
</body>

これはあるかもしれませんあなたがやるべきこと:

document.getElementById("id02").innerHTML = document.getElementById("bdy").children[0].textContent; 
 
<body id="bdy"> 
 

 
    <h1 id="id00">Test 1</h1> 
 
    <h1 id="id01">Test2</h1> 
 
    <p id="id02"></p> 
 
</body>

関連する問題