在某个div中获取classname的元素

时间:2016-07-29 10:44:52

标签: javascript html

我正在尝试点击包含此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的按钮,但只有div中的类名a ??

P.S。我也尝试了这个

var buttons = document.getElementsByClassName('a').getElementsByTagName('span').getElementsByClassName('b');

     for(var i = 0; i <= buttons.length; i++)  
         buttons[i].click();

但是当我[ ]

时,我得到一个空数组console.log(buttons)作为回应

4 个答案:

答案 0 :(得分:2)

您可以使用querySelector来解决此问题。

  

document.querySelectorAll(“div.a a.b”);

答案 1 :(得分:0)

由于只会为root分配一个div,您可以提供ID,或者,您可以执行此操作:

 <figure class="figure">
      <img src="..." width="200px" height="200px" class="figure-img img-fluid img-rounded" alt="A generic square placeholder image with rounded corners in a figure.">
      <figcaption class="figure-caption">A caption for the above image.</figcaption>
    </figure> 
class='a'

这很有效,这里是:https://jsfiddle.net/nd8m7mms/4/

答案 2 :(得分:0)

您可以使用jquery并执行

var buttons = $(&#39; .a&gt; .b&#39;);

答案 3 :(得分:0)

这是一个XPath解决方案:

&#13;
&#13;
let res = document.evaluate('//*[@class="a"]//*[@class="b"]',document,null,XPathResult.ANY_TYPE,null);
res.iterateNext().click();
&#13;
<div class="a">
  <span>
   <a class="b" role="button" onclick="console.log('clicked!')">test</a>
  </span>
</div>
&#13;
&#13;
&#13;

不幸的是Internet Explorer still doesn't support the XPath API