使用javascript选择选项
可能重复: 我有一个下拉菜单,我想在ajax调用中选择它。这就是我目前正在使用的:使用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
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;