通过纯JavaScript获取div的第n个子元素

Ali*_*ice 1 html javascript

我有一个名为“ myDiv”的div元素。如何通过DOM操作获得“ myDiv”的第n个孩子?标记:

function revealNibble(n) {
      //Do something here...
      var elements=document.getElementById('myDiv').children;
      for(var i=1;i<=elements.length;i++){
      	if(n===i){
          var output=elements[i].innerText || elements[i].textContent;
          document.getElementById('output').innerHtml=output;
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)
 <body>
          <div id="myDiv">
          <p>One</p>
          <p>Two</p>
          <p>Three</p>
          <p>Four</p>
          <p>Five</p>
          </div>
          <hr/>
          <div id="output"></div>
        </body> 

    
Run Code Online (Sandbox Code Playgroud)

我的代码不起作用!!!

小智 5

您可能正在寻找NodeList.item()

var elements=document.getElementById('myDiv').children
elements.item(n)
Run Code Online (Sandbox Code Playgroud)

请参阅:https//developer.mozilla.org/en-US/docs/Web/API/NodeList/item


Sla*_*lai 5

var n = 4

console.log( myDiv.children  [n - 1] )   // Nth Element     <p>Four</p>

console.log( myDiv.childNodes[n - 1] )   // Nth Node        <p>Two</p>
Run Code Online (Sandbox Code Playgroud)
<body>
  <div id="myDiv">
    <p>One</p>
    <p>Two</p>
    <p>Three</p>
    <p>Four</p>
    <p>Five</p>
  </div>
  <hr/>
  <div id="output"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

  • 澄清一下,`myDiv.childNodes[3]` 是 `&lt;p&gt;Two&lt;/p&gt;` 的原因是因为 `childNodes` 还包含“文本节点”,即。第一个和第二个元素之前的“文本”条目(在本例中仅为空格)。 (2认同)

brk*_*brk 1

改成innerHTML

function revealNibble(n) {
  //Do something here...
  var elements = document.getElementById('myDiv').children;

  for (var i = 1; i <= elements.length; i++) {
    if (n === i) {
      var output = elements[i].innerHTML || elements[i].textContent;
      document.getElementById('output').innerHTML = output; // changed here
    }
  }
}
revealNibble(3)
Run Code Online (Sandbox Code Playgroud)
<div id="myDiv">
  <p>One</p>
  <p>Two</p>
  <p>Three</p>
  <p>Four</p>
  <p>Five</p>
</div>
<hr/>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)