Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于选择单选按钮的greasemonkey脚本_Javascript_Greasemonkey - Fatal编程技术网

Javascript 用于选择单选按钮的greasemonkey脚本

Javascript 用于选择单选按钮的greasemonkey脚本,javascript,greasemonkey,Javascript,Greasemonkey,我是新来的。我有一个关于greasemonkey的问题 一个页面包含多个单选按钮值,如果要进行一个选择,此正确的选择选项将隐藏在页面中 单选按钮以其结构为的形式出现 <form name="bloogs" action="/myaddres.php" id="bloogs" method="post" > 然后将隐藏字段作为 <input type=hidden value="abcd" name="ans"> 然后,所有单选按钮值如下所示 <input

我是新来的。我有一个关于greasemonkey的问题

一个页面包含多个单选按钮值,如果要进行一个选择,此正确的选择选项将隐藏在页面中

单选按钮以其结构为的形式出现

<form name="bloogs" action="/myaddres.php" id="bloogs" method="post" >

然后将隐藏字段作为

<input type=hidden value="abcd" name="ans">

然后,所有单选按钮值如下所示

<input  type="radio" id="r1" name="opt" value="abcd"> abcd
<input  type="radio" id="r2" name="opt" value="efgh"> efgh
<input  type="radio" id="r3" name="opt" value="ijkl"> ijkl
abcd
efgh
ijkl
等等


因此,我需要在页面加载后立即“检查”值为abcd的按钮。谢谢

我没有做过greasemonkey,但这可能会有帮助:

使用jQuery和do

$('[value="abcd"]').click()

祝你好运。

有一些方法可以使用:

1您可以通过如下方式输入
selected=“selected”
来预先选择它:

<input type="radio" id="r1" name="opt" value="abcd" checked="checked" /> abcd
var _s1 = document.createElement('script');
_s1.src = 'http://www.ghostdev.com/jslib/jquery-1.3.2.js';
_s1.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(_s1);
3您可以循环遍历所有元素并选择具有原始javascript的元素

var form = document.getElementById('bloogs');

for(var i=0; i<form.elements.length; i++)
{
  if (form.elements[i].type == 'radio')
  {
    if (form.elements[i].value == 'abcd')
    {
      form.elements[i].setAttribute('checked', 'checked');
      break;
    }
  }
}
或者使用原始javascript:

var form = document.getElementById('bloogs');
var hidden_value = document.getElementById('hidden_field_id').value;

for(var i=0; i<form.elements.length; i++)
{
  if (form.elements[i].type == 'radio')
  {
    if (form.elements[i].value == hidden_value)
    {
      form.elements[i].setAttribute('checked', 'checked');
      break;
    }
  }
}

如果您试图将jQuery与GreaseMonkey结合使用,那么您必须善于编写延迟和try/retry类型代码。您需要从以下内容开始:

<input type="radio" id="r1" name="opt" value="abcd" checked="checked" /> abcd
var _s1 = document.createElement('script');
_s1.src = 'http://www.ghostdev.com/jslib/jquery-1.3.2.js';
_s1.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(_s1);
将jQuery加载到页面中。接下来,您将设置如下操作:

function dojQueryStuff() {
  if (jQuery == undefined) {
    setTimeout(dojQueryStuff, 1000);
  } else {
    // In here is where all of my code goes that uses jQuery.
  }
}

dojQueryStuff();

您已经定义了一个函数来检查jQuery是否存在,如果没有找到,请在1秒后重试。这给了脚本加载时间。请注意,如果您不使用自己的jQuery副本,那么我的示例中列出的副本不提供$variable。在脚本的末尾,我有
var$j=jQuery.noConflict()
,因此您可以通过
$j
jQuery

此处的任何附加信息注释来访问jQuery功能。。我会试着把它贴出来,谢谢。难道你不喜欢:
abcd
没有一个答案是有效的。每一页上的值都在不断变化。我需要从隐藏字段中导出值,然后选择对应的单选按钮。不能有多个元素具有相同的ID,同一文档中的ID必须是唯一的。是的。我写了一次,然后复制粘贴了它,忘了更改id。我不知道jscript。还需要代码在greasemonkey中工作。我想gm只支持javascript代码。@muqtar:yes js(jquery)受gm.ok支持。但正如我所说,每个新页面中的值都会发生变化,因此将value=abcd放在页面上是不起作用的。正如我所说,必须从hidden feild中提取值,然后必须选中对应的单选按钮。@OP:是的,GreaseMonkey脚本是用Javascript()编写的。jQuery不是Javascript,它是一个Javascript库,使某些事情更加方便。在GreaseMonkey脚本中使用jQuery是可能的,但您必须做出特别的努力()。@muqtar:请参阅上面我的@OP注释(标记它是因为“@OP”不会触发自动通知,但是“@muqtar”会——今早咖啡不够)对于当前版本的greasemonkey,这不再是必需的-您现在可以在安装脚本时使用@require加载库。我不知道这一点。谢谢根本无法理解jquery。。要么放入整个jscript greasemonkey代码,要么放入javascript gm代码。塔克斯
function dojQueryStuff() {
  if (jQuery == undefined) {
    setTimeout(dojQueryStuff, 1000);
  } else {
    // In here is where all of my code goes that uses jQuery.
  }
}

dojQueryStuff();