如何使用 Greasemonkey 自动选择特定的单选按钮
How can I automatically select specific radio buttons with Greasemonkey?
我想用Greasemonkey自动回答问题。我有问题和答案,但如何选择它们?
这是 HTML:
<div class="vito_form_q">
<div class="vito_form_title_min_no">
<span id="ContentPlaceHolder1_lblquestionNo">8</span>
</div>
<div class="vito_form_title_min">
<span id="ContentPlaceHolder1_lblquestion">Which sport is not playing with the ball?</span>
</div>
<div class="clearfloat"></div>
<div class="meter orange nostripes"><span style="width: 100%"></span></div>
<div class="quest">
<table id="rbAnswer" class="q1">
<tr><td>
<input id="rbAnswer_0" type="radio" name="ctl00$ContentPlaceHolder1$rbAnswer" value="157"/><label for="rbAnswer_0">Handball</label>
</td></tr>
<tr><td>
<input id="rbAnswer_1" type="radio" name="ctl00$ContentPlaceHolder1$rbAnswer" value="158"/><label for="rbAnswer_1">Basketball</label>
</td></tr>
<tr><td>
<input id="rbAnswer_2" type="radio" name="ctl00$ContentPlaceHolder1$rbAnswer" value="159"/><label for="rbAnswer_2">Football</label>
</td></tr>
<tr><td>
<input id="rbAnswer_3" type="radio" name="ctl00$ContentPlaceHolder1$rbAnswer" value="160"/><label for="rbAnswer_3">Fencing</label>
</td></tr>
例如,对于这个问题:
<span id="ContentPlaceHolder1_lblquestion">Which sport is not playing with the ball?</span>
选择答案:
<td>
<input id="rbAnswer_3" type="radio" name="ctl00$ContentPlaceHolder1$rbAnswer" value="160" />
<label for="rbAnswer_3">Fencing</label>
我如何使用Greasemonkey执行此操作?
制作一系列问题和答案,如下所示:
var answerKey = [
{ q: "sport is not playing with the ball", a: "Fencing" }
, { q: "Best SciFi franchise", a: "Star Trek" }
, { q: "Most badass monster", a: "Bun-Bun" }
, { q: "Most toxic chemical in this list", a: "Mountain Dew" }
// etc.
];
然后将此行添加到 Greasemonkey 脚本的元数据块中:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
然后,使用 jQuery 的强大功能,您的脚本可以使用以下代码检查正确的单选按钮:
(参见jsFiddle底层代码的演示。
var answerKey = [
{ q: "sport is not playing with the ball", a: "Fencing" }
, { q: "Best SciFi franchise", a: "Star Trek" }
, { q: "Most badass monster", a: "Bun-Bun" }
, { q: "Most toxic chemical in this list", a: "Mountain Dew" }
// etc.
];
//--- Loop through the question(s) on the page and answer then if possible.
var questionTxt = $("div div.vito_form_title_min span[id$='question']");
questionTxt.each ( function () {
var bFoundAnswer = false;
var answerTxt = getAnswer (this.textContent);
if (answerTxt) {
//--- We have the answer text, now find the matching radio button and select it.
var ansForThisQ = $(this).parent (). nextAll ("div.quest").find ("label");
ansForThisQ.each ( function () {
var zRegExp = new RegExp (answerTxt, 'i');
if (zRegExp.test (this.textContent) ) {
bFoundAnswer = true;
var label = $(this);
var radioButt = $("#" + label.prop ("for") );
radioButt.prop ("checked", "checked");
label.css ("background", "lime");
return false; // End loop
}
} );
}
else {
alert ("I don't know how to answer: '" + this.textContent + "'");
$(this).css ("background", "pink");
}
if ( answerTxt && ! bFoundAnswer) {
alert ("The page does not have the specified answer for the question: '" + this.textContent + "'");
$(this).css ("background", "pink");
}
} );
function getAnswer (questionText) {
for (var J = answerKey.length - 1; J >= 0; --J) {
var zRegExp = new RegExp (answerKey[J].q, 'i');
if (zRegExp.test (questionText) )
return answerKey[J].a;
}
return null;
}
相关文章:
- 根据页面加载时的单选按钮选择显示某些字段
- Ng点击记住单选按钮选择
- Angular未更新单选按钮选择
- 阅读JS中的单选按钮选择
- JQuery IE11 单选按钮选择器
- 确认单选按钮选择
- 贝宝表单问题的单选按钮选择
- 使用javascript在单选按钮选择上加载URL
- 显示基于多个单选按钮选择的图像
- 基于输入值的单选按钮选择
- 将域类id返回到由单选按钮选择的控制器
- 无法更改单选按钮选择 - KnockoutJS
- 单选按钮选择列表框更改并将 NULL 值传递给每个列表框
- 用户在Javascript的帮助下,仅通过单选按钮选择一个付款方式(信用卡)
- 基于多个单选按钮选择显示或隐藏元素
- 如何根据单选按钮选择在表中切换多个输入
- 无法更改单选按钮选择
- 提交页面而不为所需单选按钮选择值
- 使用基于单选按钮选择的 jquery 将表格单元格添加到行尾
- j查询动态验证单选按钮选择