基于Tampermonkey实现自动点击多特定文本问卷按钮求助
如何用Tampermonkey同时选中含'Male'和'Mr.'的问卷按钮
你的现有脚本之所以只能触发'Male'按钮的点击,是因为find()方法只会返回第一个匹配到的元素。要同时处理'Male'和'Mr.'两个目标,我们只需要调整逻辑,找出所有符合条件的元素并逐个触发点击就可以了。
下面是修改后的完整脚本:
// ==UserScript== // @name Male & Mr. Auto-select // @namespace http://tampermonkey.net/ // @version 0.1 // @description Auto-select buttons with 'Male' and 'Mr.' text // @author You // @match https://tasupport.co1.qualtrics.com/jfe/form/SV_0qez6NHJGoCAmMt // @match https://tasupport.co1.qualtrics.com/jfe2/form/SV_0qez6NHJGoCAmMt/next?rand=775440350&tid=1&t=1547858208474 // @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 targetTexts = ['Male', 'Mr.']; const fire = () => { // 筛选出所有文本匹配目标数组的span元素 const matchingElements = Array.from(document.querySelectorAll('label > span')) .filter(e => targetTexts.includes(e.textContent.trim())); // 遍历所有匹配元素,点击它们的父label按钮 matchingElements.forEach(element => { element.parentElement.click(); }); }; waitForKeyElements("label", fire);
关键修改说明:
- 新增
targetTexts数组:把需要自动选中的文本统一放在这里,后续要扩展其他选项(比如'Female'、'Ms.')直接修改数组即可,非常灵活 - 用
filter()替代find():find()只返回第一个匹配项,filter()会返回所有符合条件的元素,这样就能同时处理多个目标 - 加入
trim():处理文本前后可能存在的空格,避免因为格式问题导致匹配失败 - 用
forEach()遍历触发点击:对每个匹配到的元素,执行父label的点击操作
内容的提问来源于stack exchange,提问作者theCrabNebula
相关产品推荐
相关产品推荐

