2017-09-05 57 views
0

获取元素的孙子我有以下几点:与特定的ID

<div id="first"> 
    <div id="second"> 
    <button id="third"></button> 
    </div> 
</div> 

first ID的DIV不会改变它的ID,但secondthird可能会改变。

如果从来没有改变过我会使用的东西下面的目标third

submission = document.getElementById("third"); 

然而,使用first,我怎么会现在访问它?我试过以下,但得到不同的结果返回比上面的(这正是我需要的)

submission = document.querySelectorAll("div#first div button"); 

这似乎是工作,但不干净的外观:

document.getElementById("first").children[0].children[0]; 
+0

在你的例子中,你使用的是香草JS,但你把它标记为jquery? – tgdn

+0

“*'second'和'third' ......改变*”的方式是什么? –

+0

他们可能是其他任何值 – pee2pee

回答

2

您应该使用querySelector(),如果你想获得button元素而不是querySelectorAll(),将返回一组元素,适合选择:

submission = document.querySelector("div#first div button"); 

希望这有助于。

console.log(document.getElementById("third")); 
 
console.log(document.querySelector("div#first div button"));
<div id="first"> 
 
    <div id="second"> 
 
    <button id="third"></button> 
 
    </div> 
 
</div>

2

var btn = document.querySelectorAll('#first> div> button'); 
 
var btn1 = document.querySelector('#first> div> button'); 
 

 
console.dir(btn) 
 
console.dir(btn1)
<div id="first"> 
 
    <div id="second"> 
 
     <button id="third"></button> 
 
    </div> 
 
</div>

如果你这样做document.querySelectorAll那么这将返回NodeListsArray如果你这样做document.querySelector那么它将返回特定元素

var btn = document.querySelectorAll('#first> div> button'); 
var btn1 = document.querySelector('#first> div> button'); 

console.dir(btn) 
console.dir(btn1)