寻找一种简单的方法来单击带有书签的多个元素

时间:2019-04-07 14:58:08

标签: javascript bookmarklet

我正在尝试创建一个在不同网页上执行简单功能的书签。这个想法是,它可以轻松地找到位置(在书签栏上)并在给定页面上执行“标准功能”。除了寻找超链接或提交按钮外,我还可以依靠小书签来完成其职责。

作为不使用JavaScript进行编码的人,我很难使小书签在多个项目/页面上工作。我首先成功地使用了getElementById函数

javascript:(function () {
var i = document.getElementById("contactSeller").click()
})()

在另一页上,有一个ID为“ sndBtn”的按钮。但是,向具有第二个ID的代码添加另一个click()函数不起作用。

javascript:(function () {
var i = document.getElementById("contactSeller").click();
var m = document.getElementById("sndBtn").click()
})()

据我所知,因为getElementById在页面上只能工作一次。 (删除第一个功能使第二个功能起作用)。其他用户建议使用CSS或jQuery递归函数,但我运气不佳,无法将它们用作书签。

有人可以帮助构建一个通过点击列表运行的简单功能吗?具有跟随超链接,提交表单和单击按钮的能力将是很好的,即,它不仅是相同功能的递归脚本。每个页面上的每个元素似乎都有唯一的ID。

链接 GetElementByID - Multiple IDs

https://gist.github.com/aseemk/5000668

https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

http://www.dynamicdrive.com/forums/showthread.php?30130-multiple-ID(elements)-inside-document-getElementById(-)

2 个答案:

答案 0 :(得分:0)

您可以致电.click()的次数没有限制。当元素不存在时,您可能会遇到导致脚本终止的异常。您不能在空对象上调用javascript:(function () { var i = document.getElementById("contactSeller"); if(i){i.click();} var m = document.getElementById("sndBtn") if(m){m.click();} })()

这将在单击之前检查元素的存在:

{{1}}

答案 1 :(得分:0)

看了一个例子,它很好用了。

我认为@Rich Moss写的是正确的,document.getElementById("contactSeller")是未定义的,或者click函数得到了例外,从而阻止了代码继续。

function c(v){
console.log(v)
}

document.getElementById("btn1").click()
document.getElementById("btn2").click()
<input type="button" onclick="c(1)" value="btn1" id="btn1" />

<input type="button" onclick="c(2)" value="btn2" id="btn2" />