2016-06-21 259 views
0
<div class="main"> 
<p>I don't want this</p> 
<div class="sub">I want this</div> 
</div> 

<div class="main"> 
    <p>I don't want this</p> 
    <div class="sub">I want this</div> 
</div> 

<div class="main"> 
    <p>I don't want this</p> 
    <div class="sub second">I don't want this</div> 
</div> 

我试图使用QuerySelectorAll返回嵌套在“主”div中的所有“子”div。即时通讯目前使用QuerySelectorAll返回比预期的更多

document.querySelectorAll(".main .sub") 

,但它返回类名称以“子”,因此它也与类名“子第二”或“分三”是它可能只是选择的div这就是类返回的div的所有div是“子”。

我也想用

document.querySelectorAll(".main .sub").click() 

之后点击的结果,但这返回一个错误,我认为这是becasue

.click() 

仅设计为一次一个对象的工作。是否有可能选择与类名“亚健康”的所有div,然后在接受的答案点击他们使用类似的东西来

.click() 
+0

通过'。点击()'你说' jQuery .click()'? –

+0

[链接](http://www.w3schools.com/jsref/met_html_click.asp)我在说这个 –

回答

0

您可以使用此选择:

document.querySelectorAll(".main [class='sub']") 

如下可以遍历结果项:

var divs = document.querySelectorAll(".main [class='sub']"); 
 

 
[].forEach.call(divs, function(div) { 
 
    // do whatever 
 
    div.style.color = "red"; 
 
});
<div class="main"> 
 
<p>I don't want this</p> 
 
<div class="sub">I want this</div> 
 
</div> 
 

 
<div class="main"> 
 
    <p>I don't want this</p> 
 
    <div class="sub">I want this</div> 
 
</div> 
 

 
<div class="main"> 
 
    <p>I don't want this</p> 
 
    <div class="sub second">I don't want this</div> 
 
</div>

0

看吧:Fastest way to convert JavaScript NodeList to Array?

Array.prototype.slice.call(document.querySelectorAll(".main .sub")).forEach(function(el){ 
    el.click(); 
}) 

编辑1 - 超时

要在每次点击之间暂停,只需在封闭范围内添加一个setTimeout调用,参考迭代并乘以期望的延迟:

Array.prototype.slice.call(document.querySelectorAll(".main .sub")).forEach(function (el, i) { 
    (function (a) { 
     setTimeout(function() { 
      el.click(); 
     }, (10 * 1000) * a); 
    })(i); 
}) 
+0

这只是答案的一部分......它没有解决'class =“子“'问题 – devnull69

+0

是否有可能在每次点击之前添加10秒延迟? –

+0

@ A.Seidel当然,只需在循环中的每次点击周围添加一个[setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout),并通过'iteration' 。我会编辑答案。 –

相关问题