1

我有一个名为批次的下拉列表。如果我选择了第二个选项,则 OnChange 函数内的 dropdown.selectedIndex 始终显示所选索引。但是 document.getElementById("batches").selectedIndex 总是显示第一个索引。
为什么是这样?
实际上,我想在另一个函数中读取正确的 selectedIndex 批次,这就是为什么我需要一种方法来以两种方式获取正确的选定索引。

function OnChange(dropdown){
   var myindex  = dropdown.selectedIndex;// This prints correctly
   alert("Index : "+document.getElementById("batches").selectedIndex);// This is always 0 no metter what selects        
}

<select name='batches' id='batches' onchange='OnChange(this);'>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
</select>
4

2 回答 2

1

我不知道您正在测试什么浏览器,但在我测试的所有浏览器中,以下内容始终显示为 true:

<select id="batches" onchange="
  alert(this.selectedIndex == document.getElementById('batches').selectedIndex);
">
  <option value = "1">1
  <option value = "2">2
  <option value = "3">3
</select>

<!-- and to confirm... -->
<button onclick="
  alert(document.getElementById('batches').selectedIndex);
">Show selected index</button>

我希望您不会因为选项值 1、2 和 3 与 selectedIndexes 0、1 和 2 相关而感到困惑。

于 2012-08-08T03:07:12.867 回答
1

因为你调用函数 onChange 事件即不是过去。尝试在没有onchange事件的情况下触发函数并且属性被选中过去

        <select name='batches' id='batches' onchange='someFunc();'>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
</select>
<a href="javascript:someFunc()">Test</a>

<script>
function someFunc(){
   //var myindex  = dropdown.selectedIndex;// This prints correctly
   alert("Index : "+document.getElementById("batches").selectedIndex);// This is always 0 no metter what selects        
}
</script>

它会起作用的。只需将此代码复制并粘贴到您的文本编辑器中并进行测试

于 2012-08-08T00:36:47.083 回答