2013-09-29 29 views
3
<div class="keys"> 
    <button id="a"></button> 
    <button id="b"></button> 
</div> 

我有很多按钮,我只想get的那些的<div>class="keys"里面,但我不能让它工作, 到目前为止我试着:如何获得div内的按钮?没有JQuery的

content = document.getElementsByClassName("keys"); 
kbButtons = content.getElementsByTagName("button"); 

我只是得到undefined

+0

难道还有比一个DIV用'类=“键”'多吗? – Barmar

+0

@Barmar nope,只是再次检查确认,只有1 – y0ruba

回答

5

通知的方法是怎么命名为“的getElements ...”,复数。

document.getElementsByClassName()返回一个HTMLCollection,一个类似数组的对象。

content = document.getElementsByClassName("keys")[0]; 
kbButtons = content.getElementsByTagName("button"); 

可以与[0]括号语法访问的HTMLCollection的第一个元素。

3

我喜欢querySelector,如果你知道css选择器这真的是强大的。

kbButtons = document.querySelectorAll('div.keys button');

+0

或者,如果你只是想要一个结果,只需使用'document.querySelector'。 – Cullub

1

document.getElementsByClassName返回元素的列表,但getElementsByTagName只能被应用到一个单一的元素,而不是一个列表。您需要选择一个元件列表:

kbButtons = content[0].getElementsByTagName("button"); 
1

你可以试试这个

kbButtons = document.getElementsByClassName('keys')[0].getElementsByTagName('button') 
2

Javascript以函数'getElementsByClassName'返回一个dom元素的数组。因此,如果您有一个要用代码定位的元素,那么您需要指定所需的数组元素。否则,你会说:“在这个数组中,给我按钮元素,”当你实际上应该问的时候,“在这个数组中,给我数组第一个元素的按钮元素。”

这里是上面的JavaScript代码应该是什么样子......

content = document.getElementsByClassName("keys"); 
kbButtons = content[0].getElementsByTagName("button"); 

for (var iIndex = 0; iIndex < kbButtons.length; iIndex++){ 
    alert(kbButtons[iIndex].id); 
};