【问题标题】:How can I auto-select a radio button with Greasemonkey? [duplicate]如何使用 Greasemonkey 自动选择单选按钮? [复制]
【发布时间】:2012-02-28 11:42:22
【问题描述】:

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

<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>


【问题讨论】:

    标签: javascript radio-button greasemonkey


    【解决方案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,但我不知道它是否保留了该常量格式。

    【讨论】:

    • 感谢您的回答,但它有很多问题,所以我需要用标签名称选择它们。如何使用标签名称选择它们?
    • 我已经更新了答案。请务必阅读最后一位。
    • 嗯。我没有编码信息。现在我不明白他们。我想解释细节。我有 95 个问题,我知道所有正确答案,但我想自动选择它们。
    【解决方案2】:

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

    但理论上,这将搜索文本包含“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;
    }
    

    【讨论】:

      【解决方案3】:
      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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多