Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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选择选项_Javascript_Html_Option - Fatal编程技术网

使用javascript选择选项

使用javascript选择选项,javascript,html,option,Javascript,Html,Option,可能重复: 我有一个下拉菜单,我想在ajax调用中选择它。这就是我目前正在使用的: var selector = document.getElementById("action_person").firstChild; var n = 0; while(selector.options[n] != null) { if(selector.options[n].value == "person") { selector.options.selectedIndex = n

可能重复:

我有一个下拉菜单,我想在ajax调用中选择它。这就是我目前正在使用的:

var selector = document.getElementById("action_person").firstChild;

var n = 0;
while(selector.options[n] != null)
{
   if(selector.options[n].value == "person")
   {
      selector.options.selectedIndex = n;
   }                    
   n++;
}
我还尝试将selector.options.selectedIndex=n替换为selector.options[n].selected=true。然而,它从不为我选择。它总是在下拉列表的顶部显示项目

我已经验证了值person确实存在于下拉列表中,并且变量选择器确实指向有效的下拉列表。我做错了什么

编辑:在被一个明显的问题轰炸后,我意识到不清楚这是在一个ajax调用后触发的。

写下这个

document.getElementById("action_person").firstChild.value="person";

这是怎么回事?或者让我们知道您的测试web浏览器

<select name="selector">
<option>Foo</option>
<option>Bar</option>
<option>Baz</option>
在代码中:

> while(selector.options[n] != null)
如果选项[n]不存在,表达式将返回“未定义”,而不是null。你不妨写下:

 while (selector.options[n])
然后:

没有属性,选择元素有属性。因此:

       selector.selectedIndex = n;
或者,可以将特定选项的选定属性设置为true:

       selector.options[n].selected = true;
除非您在多个select上进行迭代,否则下一行可以是return语句:

       return;

请注意,您也可以将选项的属性设置为true,然后如果表单被重置(例如单击重置按钮),则该选项将被设置为选中。

我最后循环了这些选项,然后修改DOM以在相应的选项上包括selected=selected。我不知道为什么给出的解决方案都不起作用,但它现在起作用了。

首先,根据OP的JavaScript,action_person显然不是一个好的解决方案。这是真的。它的第一个子项应该是select。因为您没有给出任何html,所以我尝试做了一个测试来测试您的问题。您的javascript看起来很好。我猜您收到了一个javascript错误。很可能您收到了一个错误,即您的选择器未定义。我不应该管源代码来自哪里,一旦它添加到DOM中,许多答案都会起作用。OP正在检查选项值,而不是innerText。如果文本是必需的,那么应该使用选项的text属性,因为它可以在任何地方工作,而innerText不能。
       selector.options[n].selected = true;
       return;