我是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, "a_barsa", "/likes/jack22/question/12289827274/add"); 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, "a_barsa", "/likes/jack22/question/12289827786/add"); 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' /> 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();
}
};
}
答案 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触发,并且本机绑定事件是本机触发的(按照第一种方法)