10
<div class="keys">
    <button id="a"></button>
    <button id="b"></button>
</div>

我有很多按钮,我只想要withget里面的按钮,但我无法让它工作,到目前为止我试过:<div>class="keys"

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

我只是不确定

4

5 回答 5

13

请注意该方法是如何命名为“getElements...”的复数形式。

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

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

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

于 2013-09-29T23:37:11.517 回答
6

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

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

于 2013-09-29T23:35:53.417 回答
2

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

kbButtons = content[0].getElementsByTagName("button");
于 2013-09-29T23:36:05.593 回答
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);
};
于 2013-09-29T23:42:41.217 回答
1

你可以试试这个

kbButtons = document.getElementsByClassName('keys')[0].getElementsByTagName('button')
于 2013-09-29T23:37:04.510 回答