Javascript selectedIndex正在返回";“未定义”;作为价值

Javascript selectedIndex正在返回";“未定义”;作为价值,javascript,Javascript,如果这是一个愚蠢的问题,请原谅我;我已经很多年没有使用javascript了。这实际上是在Joomla中通过PHP呈现的javascript和html,但我尝试在一个普通的旧本地html文件中使用相同的代码,我得到了相同的错误。我有一个带有多个选项的选择字段,一旦更改,我想将文本字段的值设置为所选选项的值。无论我选择哪个选项,文本字段都被设置为“未定义”。有人能帮我吗?以下是简单的html代码: <html> <head> <script type="text/ja

如果这是一个愚蠢的问题,请原谅我;我已经很多年没有使用javascript了。这实际上是在Joomla中通过PHP呈现的javascript和html,但我尝试在一个普通的旧本地html文件中使用相同的代码,我得到了相同的错误。我有一个带有多个选项的选择字段,一旦更改,我想将文本字段的值设置为所选选项的值。无论我选择哪个选项,文本字段都被设置为“未定义”。有人能帮我吗?以下是简单的html代码:

<html>
<head>
<script type="text/javascript">
function setPrefix(){
    var f = document.adminForm;
    f.prefix.value = f.editprefixes.selectedIndex.value;
}
</script>
</head>
<body>

<form name="adminForm">

<select name="editprefixes" onchange="javascript:setPrefix()">
<option value=1000>1000</option>
<option value=1001>1001</option>
<option value=1005>1005</option>
<option value=1011>1011</option>
<option value=1016>1016</option>
</select>
<br />

<input type="text" name="prefix" value="" />
</form>
</body>
</html>

函数setPrefix(){
var f=document.adminForm;
f、 prefix.value=f.editprefixes.selectedIndex.value;
}
1000
1001
1005
1011
1016

一个
selectedIndex
属性并不是指一个实际的
对象,而是一个与所选选项的索引相对应的整数(因此第一个选项是0,第二个选项是1,依此类推)

如果要获取所选选项的值,需要使用:

var sel = f.editprefixes;
f.prefix.value = sel.options[sel.selectedIndex].value;
试试这个:

f.prefix.value = f.editprefixes.options[f.editprefixes.selectedIndex].value;

另外,在属性中使用
javascript:
pseudo协议作为javascript代码的前缀并没有真正的理由
onchange=“setPrefix()”
将正常工作。+1,一个很好的解释。FWIW,
sel.value
也适用于所有浏览器中的这种情况。