只要选择了特定的<option>,就可以从Greasemonkey脚本中更改页面</option>

时间:2010-07-05 12:05:50

标签: javascript jquery greasemonkey

在使用jQuery和“tamtam”编写GreaseMonkey脚本时,我脑子里出现了一个问题。

有一个页面(我无法编辑),其中<select>元素有四个选项。选项2已预先选定。

<select id="idname" name="namename">
  <option>Option1</option>
  <option selected="selected">Option2</option>
  <option>Option3</option>
  <option>Option4</option>
</select>

现在我想在选择Option1时调用脚本。 Option1导致另一个我想插入脚本的网站。

我怎么写这样的东西:

if (Option1 is selected) {
    perform the script
}

以下是否会有以下工作?

if(document.getElementById("idname").getElementsByTagName("option")[0].onselect == true){
    perform the script 
}

如果没有,你可以发帖帮助我吗?

修改

我能够创建一个函数和一个事件处理程序。

function myCompute(Event) {
    with (this) {  
        var myTest = value;

        if (value == "option1") {
            $("#tabelle").show();
        }

        else {
            $("#tabelle").hide();
        }
    }
}

事件处理程序:

$("#option-type").change (myCompute);
$("#tabelle").hide();

它的工作原理如下: 通过选择选项2,3或4,表格被隐藏。通过选择选项1,可以显示表格。 通过访问站点选项2在大多数时间被选中,并且没有显示任何内容。 现在我得到了通过访问网站选择选项1的情况,也没有出现表格。我的想法是,当预选option1时,应该显示该表。我认为缺少一个EventHandler。 和你一样,布洛克亚当斯说。

$("#option-type option:first").select (myCompute);
$("#option-type").change (myCompute);
$("#tabelle").hide();

如果我将函数与$("#tabelle").hide();绑定,则表从一开始就是隐藏的。通过将选项更改为option1,将显示该表。如何在选择选项1时显示表格,如何在选择选项2,3,4时隐藏表格?

尝试option:first会导致“未知的伪元素”错误。

2 个答案:

答案 0 :(得分:1)

<强>更新

好的,如果我理解修改后的问题,代码现在可以按预期工作,除非选项1按选择开始。 (PS,应该编辑给定代码的id以匹配。)

如果这是真的,那么只需改变这一行:

$("#tabelle").hide();


对此:

if ($("#option-type")[0].selectedIndex == 0 )
    $("#tabelle").show();
else
    $("#tabelle").hide();

在Greasemonkey中,由于沙盒保护,您无法设置事件处理程序。见Common Pitfalls in Greasemonkey
此外,使用jQuery,有更简单的方法来选择该元素。

类似:$("#idname option:first").select (YourEventHandler)应该有效。

其中:

function YourEventHandler (Event)  
{
    //YOUR CODE HERE
    //Note: Event is a variable passed automatically to all event handlers, you often just ignore it.
}

Handy jQuery reference

答案 1 :(得分:0)

您可以使用.selectedIndex property来选择哪一个,如下所示:

if(document.getElementById("idname").selectedIndex === 0) { //option 1
  //perform the script
}

这是一个从0开始的索引,因此示例标记you can test/play with it here中的0为Option 1


我不明白这个问题,但是如果你想在change事件中这样做,它看起来像这样:

document.getElementById("idname").onchange = function() {
  if(this.selectedIndex === 0) {
    //perform the script
  }
};

You cant test it here