在使用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
会导致“未知的伪元素”错误。
答案 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.
}
答案 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
}
};