2012-02-07 48 views
-1

我想用Greasemonkey选择自动单选按钮。但是我想要选择带有标签名称的收音机。 当我看到四个单选按钮时,Greasemonkey需要选择我的选项。 例如:我想要自动选择标签Instagram如何使用Greasemonkey自动选择单选按钮?

<label for="ContentPlaceHolder1_answer3">Instagram</label> 

如何使用Greasemonkey选择此单选按钮?

<div class="row"> 
       <input type="radio" tabindex="3" value="answer1" name="ctl00$ContentPlaceHolder1$1" id="ContentPlaceHolder1_answer1"><label for="ContentPlaceHolder1_answer1">Twitpic</label></div> 

<div class="row"> 
      <input type="radio" tabindex="4" value="answer2" name="ctl00$ContentPlaceHolder1$1" id="ContentPlaceHolder1_answer2"><label for="ContentPlaceHolder1_answer2">Yfrog</label></div> 

<div class="row"> 
      <input type="radio" tabindex="5" value="answer3" name="ctl00$ContentPlaceHolder1$1" id="ContentPlaceHolder1_answer3"><label for="ContentPlaceHolder1_answer3">Instagram</label></div> 

<div class="row"> 
      <input type="radio" tabindex="6" value="answer4" name="ctl00$ContentPlaceHolder1$1" id="ContentPlaceHolder1_answer4"><label for="ContentPlaceHolder1_answer4">Flickr</label></div> 

</div> 


回答

0
var labels = document.getElementsByTagName('label'); //get the labels 
for (var i = 0; i < labels.length; ++i) { //loop through the labels 
    if (labels[i].textContent == "Instagram") { //check label text 
     labels[i].click(); //if correct text, click the label 
    } 
} 
+0

我会尝试一下。 TY。 – hcttepe 2012-02-07 01:17:27

+0

谢谢你。有效。 – hcttepe 2012-02-07 14:47:06

1

试试这个:

var label="whatever"; //The label you want to look for, you may already have some such variable 
var allLabels=document.getElementsByTagName("label"); //Get all labels 
for (var i=0;i<allLabels.length;i++) { //Loop through labels 
    if (allLabels[i].innerHTML.toLowerCase()==label) { //If a match is found... 
     allLabels[i].parentNode.getElementsByTagName("input")[0].checked=true; //Check the parent element for inputs (radio buttons, for instance), and check the first one 
    } 
} 

我不能告诉肯定是否会不知道HTML是如何放在一起工作。你在你的问题中给出了HTML,但我不知道它是否保留了这个常量格式。

+0

谢谢你的回答,但它有很多问题,所以我需要选择标签名称。我如何选择标签名称? – hcttepe 2012-02-07 00:54:50

+0

我已更新答案。请务必阅读最后一页。 – 2012-02-07 01:02:15

+0

hmm。我没有编码信息。现在我不明白他们。我想解释细节。我有95个问题,我知道所有真正的答案,但我想选择他们自动。 – hcttepe 2012-02-07 01:14:43

1

我已经有一段时间没有使用的XPath,所以它可能不会做任何事情:)

但在理论上,这将搜索所有标签在文本constains“Instagram的”,然后将其遍历所有结果,使用for属性获取单选按钮并将其设置为true。 (虽然我认为它的“选择”单选按钮?)

function xpathSnapshot(expression,context) { 
    var r=document.evaluate(expression,context,null,6,null),i=r.snapshotLength-1; 
    this.iterate=function() {return r.snapshotItem(i--)} 
} 

var labels = xpathSnapshot("//label[contains(text(),\"Instagram\")]",document); 

while (label = labels.iterate()) { 
    document.getElementById(label.getAttribute("for")).checked = true; 
} 
+0

我会尝试一下。谢谢。 – hcttepe 2012-02-07 01:18:35

0

这里有一个完整的脚本,并在使用the jQuery contains() selector

我们利用<label>for属性,因为它存在。 :

// ==UserScript== 
// @name  _Name 
// @include http://YOUR_SERVER/YOUR_PATH/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js 
// ==/UserScript== 

var targLabel = $("div.select_container div.row label:contains('Instagram')"); 
var targButton = $("#" + targLabel.attr ("for")); 

//-- Select the desired radio button. 
targButton.prop ('checked', true); 
+0

我会尝试一下。谢谢。 – hcttepe 2012-02-07 01:18:48

+0

哇!它的工作:)优秀。现在我如何在标签名称中添加另一个答案。 ?同样的方法? :)谢谢布罗克亚当斯。 – hcttepe 2012-02-07 01:52:56

+0

你是什么意思?您不能同时检查2个单选按钮(在同一组中)。你可能需要开一个新的问题。 – 2012-02-07 02:07:30