2012-02-07 47 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