自动单击包含相同文本和标签的页面上的多个按钮
Automatically clicking multiple buttons on a page containing the same text and tag
我目前使用的脚本会自动点击与指定文本关联的单选按钮(但位于指定标签内;在本例中,'label')。
当页面加载时,任何带有文本 "Male" 的单选按钮(假定它在 label 标记内)会自动 selected。这是我用来执行此操作的不完整脚本:
// ==UserScript==
// @name Auto Clicker
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match *
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
const findAndClickParent = text => [...document.querySelectorAll('label > span')]
.find(e => e.textContent === text)
.parentElement
.click();
waitForKeyElements (
"label",
() => {
findAndClickParent('Male');
}
);
现在,每当我访问调查页面时,第一个包含文本 "Male" 的单选按钮都会被 select 编辑。但是,如果有其他按钮将 "Male" 作为答案选择,它们将保持未 select 状态。我希望能够 select 所有这些 - 单击所有包含 "Male," 的按钮,而不仅仅是第一个。任何和所有建议将不胜感激。
在上面的代码中只有第一个单选按钮被选中的原因是 .find 返回了与文本匹配的第一个元素。
您可以使用 .forEach
循环并单击所有带有文本 Male
的单选按钮
[...document.querySelectorAll('label > span')].forEach(e => e.textContent === "Male" ? e.parentElement.click(): null)
或
您可以对要在页面加载时选择的所有单选按钮使用 checked
属性。
<input type="radio" name="gender" value="male" checked="true">
在下面的代码中,您可以将 .click()
替换为 .checked = "true"
。或者可能有一个方法将 checked 设置为 true 然后调用该方法而不是 .click()
const findAndClickParent = text => [...document.querySelectorAll('label > span')]
.find(e => e.textContent === text)
.parentElement
.click();
我目前使用的脚本会自动点击与指定文本关联的单选按钮(但位于指定标签内;在本例中,'label')。
当页面加载时,任何带有文本 "Male" 的单选按钮(假定它在 label 标记内)会自动 selected。这是我用来执行此操作的不完整脚本:
// ==UserScript==
// @name Auto Clicker
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match *
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
const findAndClickParent = text => [...document.querySelectorAll('label > span')]
.find(e => e.textContent === text)
.parentElement
.click();
waitForKeyElements (
"label",
() => {
findAndClickParent('Male');
}
);
现在,每当我访问调查页面时,第一个包含文本 "Male" 的单选按钮都会被 select 编辑。但是,如果有其他按钮将 "Male" 作为答案选择,它们将保持未 select 状态。我希望能够 select 所有这些 - 单击所有包含 "Male," 的按钮,而不仅仅是第一个。任何和所有建议将不胜感激。
在上面的代码中只有第一个单选按钮被选中的原因是 .find 返回了与文本匹配的第一个元素。
您可以使用 .forEach
循环并单击所有带有文本 Male
[...document.querySelectorAll('label > span')].forEach(e => e.textContent === "Male" ? e.parentElement.click(): null)
或
您可以对要在页面加载时选择的所有单选按钮使用 checked
属性。
<input type="radio" name="gender" value="male" checked="true">
在下面的代码中,您可以将 .click()
替换为 .checked = "true"
。或者可能有一个方法将 checked 设置为 true 然后调用该方法而不是 .click()
const findAndClickParent = text => [...document.querySelectorAll('label > span')]
.find(e => e.textContent === text)
.parentElement
.click();