在特定类中的特定元素上应用函数

时间:2015-06-02 11:11:59

标签: javascript dom

我是java脚本的新手。我使用此代码在“按钮”类

上的两个元素上应用“按”功能
unsafeWindow.press = function() {
    document.getElementsByClassName("button")[0].click();
    document.getElementsByClassName("button")[1].click(); 
}

无论如何,它只是应用于第一个(在这种情况下为0), 有什么想法吗?

这是The Html

<body>
<div class="questionBox" id="question_box_12289827274">
<div class="question" dir="ltr">
<span class="text-bold"><span dir="ltr">First question</span></span>
</div></div>
<div class="answer" dir="ltr">
first answer
</div>
<div class="likeBox">        
<span class="like-active" style="display:none"></span>
<div class=" ghostLink">
<a class="button"  href="#" onclick="Like.quickLike(12289827274, &quot;a_barsa&quot;, &quot;/likes/jack22/question/12289827274/add&quot;); return false;" style="display:block"></a>
 </div>
</div>

<div class="questionBox" id="question_box_12289827274">
<div class="question" dir="ltr">
<span class="text-bold"><span dir="ltr">second question</span></span>
</div></div>
<div class="answer" dir="ltr">
second answer
</div>
<div class="likeBox">        
<span class="like-active" style="display:none"></span>
<div class=" ghostLink">
<a class="button"  href="#" onclick="Like.quickLike(12289827786, &quot;a_barsa&quot;, &quot;/likes/jack22/question/12289827786/add&quot;); return false;" style="display:block"></a>
 </div>
</div>
</body>

这是javascript

body = document.body;
if(body != null) {
    div = document.createElement("div");
    div.setAttribute('id','like2');
    div.style.position = "fixed";
    div.style.display = "block";
    div.style.width = "25px"; 
    div.style.opacity= 0.90;
    div.style.bottom = "+40px";
    div.style.left = "+6px";
    div.style.right = "+6px";
    div.style.backgroundColor = "#ffffff";
    div.style.border = "1px solid #94a3c4";
    div.style.padding = "2px";
    div.innerHTML = "<a onclick='OtomatisLike5()'><img src='http://www.clipartbest.com/cliparts/RcG/er5/RcGer5RcL.png' width='26' height='24' align='absmiddle' />&nbsp;&nbsp;5</a>"

    body.appendChild(div);

    unsafeWindow.OtomatisLike5 = function() {
        var clickEvent = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'cancelable': true
  });
document.getElementsByClassName("button")[0].dispatchEvent(clickEvent);
document.getElementsByClassName("button")[1].dispatchEvent(clickEvent);






        buttons = document.getElementsByTagName("button");
        for(i = 0; i < buttons.length; i++) {
            myClass = buttons[i].getAttribute("class");
            if(myClass != null && myClass.indexOf("like") >= 0)
                if(buttons[i].getAttribute("name") == "likern false;")
                    buttons[i].click();
        }

    };
}

2 个答案:

答案 0 :(得分:0)

正如atmd的评论中所提到的,javascript中的数组是零索引的,所以你应该为第3和第4个元素引用2和3。你也运行了两次getElementsByClassName,这是不必要的。

试试这个:

Array.map

此外,在您的情况下,getElementsByClassName将检索其属性类等于“button”的任何html元素。如果要检索页面中的所有按钮节点,请改用getElementsByTagName。

答案 1 :(得分:0)

要触发这些元素上的事件,您需要创建一个事件对象,然后在元素上调度它:

Insert Snippet

如果使用jquery绑定您使用

的事件
 var clickEvent = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'cancelable': true
  });

document.getElementsByClassName("button")[0].dispatchEvent(clickEvent);
document.getElementsByClassName("button")[1].dispatchEvent(clickEvent);

如果这仅适用于您的某个元素而不是其他元素,则需要查看如何绑定这些事件。另请注意,jquery绑定事件只能使用jquery触发,并且本机绑定事件是本机触发的(按照第一种方法)