包含2个类和问题的Javascript代码

时间:2015-05-29 16:04:16

标签: javascript

我有一个问题,一个javascript代码点击了一个页面中的所有按钮。

这样做我有这个代码

var el = document.getElementsByClassName('A'); 
for (var i=0;i<el.length; i++) {

         el[i].click();

}

但是这段代码点击了1个按钮,然后留下了一个1未点击,然后点击了第3个按钮等(它点击1然后点击另一个。)

我的第一个问题是这个,我的第二个问题是

如果我再次运行代码,则单击所有单击的按钮。所以没有意义。

因此我检查了当点击一个按钮时,另一个类受到影响。我正在尝试使用此代码来查看它是否正常工作但它没有。

var el = document.getElementsByClassName('num_button'); 
var ele = document.getElementsByClassName('num_clicked'); 
for (var i=0;i<el.length; i++) {
    if ( ele != 1)
        {
         el[i].click();
        }
}

但它根本不起作用。它仍然会点击已点击的按钮。

任何解决方案??? 谢谢!

编辑1:这是 html代码,然后点击

<div class="stats_wrapper num_stats_wrapper ">
            <span class=" num_button  num_stats_span sprite_icon">
            </span>

              <span class="count num_count  num_popup_button ">
                13
              </span>
          </div>

html代码点击

<div class="stats_wrapper num_stats_wrapper num_clicked ">
            <span class=" num_button  num_stats_span sprite_icon">
            </span>

              <span class="count num_count  num_popup_button ">
                14
              </span>
          </div>

2 个答案:

答案 0 :(得分:4)

我相信您的问题是由更改按钮类名称以及通过修改节点的实时集合引起的。 要解决该问题,您可以将节点“转换”为数组,然后应用点击代码: var el = document.getElementsByClassName('A'); var arr = Array.prototype.slice.call(el); for(var i = 0; i&lt; arr.length; i ++){   ARR [I]。点击(); } 对于第二个问题(如果我理解正确),您只想单击之前未单击的按钮。 var el = document.getElementsByClassName('num_button'); for(var i = 0; i&lt; el.length; i ++){    var ele = el [i];    if(ele.parentNode.className.indexOf('num_clicked')== -1){      ele.click();    } }

答案 1 :(得分:0)

这部分导致问题:

if ( ele != 1)

我想你想跳过第一个元素,所以你可以简单地用

替换它
if ( i != 1)

但是从第二个元素循环开始更有意义:

var el = document.getElementsByClassName('A'); 
for (var i=1;i<el.length; i++) {
     el[i].click();
}