我编写了一个脚本,我通过开发工具运行 - > Chrome中的控制台自动添加注释,而不是一次编写和提交注释:
/**
* Created by keilc on 2/09/2015.
*/
var leaveComment = document.getElementsByClassName('plain leaveComment');
var commentBox = document.getElementsByClassName('botmarg5px feedbacktextarea');
var submit = document.getElementsByClassName('siteButton bigButton');
var comment = "thankyou very much :)";
for(var i = 0; i <= leaveComment.length; i++)
{
// Click 'leave comment'
leaveComment[i].click();
// Leave comment
commentBox[i].value = comment;
// Submit the comment
submit.click();
}
点击();成功调用leaveComment
数组中每个项目的事件,但当它到达提交按钮时,click();
方法失败并返回Object doesn't support property or method 'click'
:
所以我尝试在for循环之外的提交按钮上移动click();
调用:
for(var i = 0; i <= leaveComment.length; i++)
{
// Click 'leave comment'
leaveComment[i].click();
// Leave comment
commentBox[i].value = comment;
}
// Submit the comment
submit.click();
但这会给我Unable to get property 'click' of undefined or null reference
错误。
在尝试了这些不同的方法之后,我很困惑为什么click();
方法适用于“留言评论”链接而不是提交按钮。
答案 0 :(得分:1)
getElementsByClassName()返回所有匹配元素的NodeList。
返回具有所有给定类名的所有子元素的类数组对象。在文档对象上调用时,将搜索完整文档,包括根节点。您也可以在任何元素上调用getElementsByClassName();它将仅返回具有给定类名的指定根元素的后代元素。
var submit = document.getElementsByClassName('siteButton bigButton');
如果您只有一个匹配类的按钮,请使用
submit[0].click();
如果你有多个元素,那么迭代它们
for(var i = 0; i < submit.length; i++) {
submit[i].click();
}
答案 1 :(得分:0)
问题是submit
是NodeList
,您需要像对leaveComment
那样给出索引:
submit[i].click();