在javascript中选择第一个div孩子的第二个孩子[重复]

问题描述 投票:22回答:6

这个问题在这里已有答案:

我有一个看起来像这样的HTML:

<div id="mainDiv"> <-- I have this
    <div>
        <div></div>
        <div></div> <-- I need to get this
    </div>
    <span></span>
    <more stuff />
</div>

我在用:

var mainDiv = document.getElementById('mainDiv');

因为我需要var中的div,但我还需要将mainDiv中第一个div的第二个div放到变量中。

我怎么能以简单的跨浏览器方式做到这一点?

javascript html parent-child getelementbyid
6个回答
27
投票

假设结构是静态的,你可以这样做:

var mainDiv = document.getElementById('mainDiv'),
    childDiv = mainDiv.getElementsByTagName('div')[0],
    requiredDiv = childDiv.getElementsByTagName('div')[1];

进一步阅读:.getElementsByTagName() (from MDN)


12
投票
 var mainDiv = document.getElementById('mainDiv');
 var x = mainDiv.children[0].children[1];

要么

 var mainDiv = document.getElementById('mainDiv');
 var x = mainDiv.getElementsByTagName('div')[0].getElementsByTagName('div')[1];

6
投票

我会选择jQuery并最终得到这样的东西:

var getThis = $('#mainDiv > div:eq(0) > div:eq(1)');

Fiddle


4
投票

我只想用一行香草代码。

适用于任何元素,不仅限于结构中的标记名称。但必须保留元素和层次结构的数量。

var requiredDiv = document.getElementById('mainDiv').firstChild.firstChild.nextSibling;

0
投票
var mainDiv = document.getElementById('mainDiv');
var div = maindiv.getElementsByTagName('div')[2];//third div

http://jsfiddle.net/MGVw8/


-1
投票

你知道现在有querySelector吗?

console.log(
  mainDiv.querySelector(':nth-child(1) > :nth-child(2)'))
<div id="mainDiv">
  <div>
    <div></div>
    <div>come get me</div>
  </div>
  <!-- more stuff -->
</div>
© www.soinside.com 2019 - 2024. All rights reserved.