我正试图点击一个页面中的一些按钮,该页面包含以下html代码
<div class="a">
<span>
<a class="b" role="button">test</a>
</span>
</div>
所以我尝试的是只使用div的类a
var buttons = document.getElementsByClassName('a').getElementsByClassName('b');
for(var i = 0; i <= buttons.length; i++)
buttons[i].click();
有没有办法得到类名为b
的按钮,但只得到类名为a
的div内的按钮??
附言:我也试过了,这个
var buttons = document.getElementsByClassName('a').getElementsByTagName('span').getElementsByClassName('b');
for(var i = 0; i <= buttons.length; i++)
buttons[i].click();
但是当我console.log(buttons)
[ ]
作为响应您可以使用querySelector来解决这个问题。
document.querySelectorAll("div.aa.b");
您可以使用jquery并执行
var buttons=$('.a>.b');
这里有一个XPath解决方案:
let res = document.evaluate('//*[@class="a"]//*[@class="b"]',document,null,XPathResult.ANY_TYPE,null);
res.iterateNext().click();
<div class="a">
<span>
<a class="b" role="button" onclick="console.log('clicked!')">test</a>
</span>
</div>
遗憾的是,Internet Explorer仍然不支持XPath API。
由于只有一个div将被分配class='a'
,您可以提供一个ID,也可以这样做:
var spans = document.getElementsByClassName('a')[0].getElementsByTagName('span');
// [0] indicates the first element with the class='a'
for(var i = 0; i < spans.length; i++) {
spans[i].getElementsByClassName('b')[0].click();
}
<div class="a">
<span>
<a class="b" role="button" href="javascript:void(0)" onclick="console.log(this.innerHTML+' was clicked !')">test 1</a>
</span>
<span>
<a class="b" role="button" href="javascript:void(0)" onclick="console.log(this.innerHTML+' was clicked !')">test 2</a>
</span>
<span>
<a class="b" role="button" href="javascript:void(0)" onclick="console.log(this.innerHTML+' was clicked !')">test 3</a>
</span>
</div>
这非常有效,如下所示:https://jsfiddle.net/nd8m7mms/4/