Javascript 为什么向select元素动态添加选项会改变其selectedIndex?

Javascript 为什么向select元素动态添加选项会改变其selectedIndex?,javascript,html,Javascript,Html,简单明了:为什么将选项添加到select元素会改变其selectedIndex,有没有办法: 防止这种行为 发现它 var list=document.getElementById(“list”); list.selectedIndex=-1; 文档。写入(“所选索引:”+列表。所选索引); $(list.append('foo'); 文档。写入(“所选索引:”+列表。所选索引); list.selectedIndex=-1; 文档。写入(“所选索引:”+列表。所选索引) 选择的索引 对

简单明了:为什么将选项添加到select元素会改变其selectedIndex,有没有办法:

  • 防止这种行为
  • 发现它
  • var list=document.getElementById(“list”);
    list.selectedIndex=-1;
    文档。写入(“
    所选索引:”+列表。所选索引); $(list.append('foo'); 文档。写入(“
    所选索引:”+列表。所选索引); list.selectedIndex=-1; 文档。写入(“
    所选索引:”+列表。所选索引)
    
    
    选择的索引

    对于正常的
    选择
    ,只有在没有要选择的项目时才可能没有选择的项目。添加至少一项后,必须存在选择

    但是,如果您有一个
    选择多个
    ,则该值将被保留

    var list=document.getElementById(“list”);
    文档。写入(“
    所选索引:”+列表。所选索引); $(list.append('foo'); $(list.append('foo'); $(list.append('foo'); 文档。写入(“
    所选索引:”+列表。所选索引)
    
    
    您可以在添加选项后手动重置,基本上是添加
    列表。selectedIndex=-1
    $(列表)之后。追加('foo')

    如果只有一个选项怎么办?在哪里<代码>选择
    选择多个
    ?正如我所说的:在正常的
    选择
    下拉列表中,始终只显示/选择一个选项——除非根本没有选项。@Blazemonger但是,为什么可以通过将selectedIndex设置为-1,在添加选项后清除选择?我已经更新了片段。老实说,我不确定。我所能说的是,你可能无论如何都不应该这么做,因为这只能在JS中实现,而不是通过正常的用户交互。使用
    选择多个
    、单选按钮或
    选择一个
    ,如果您需要能够不选择任何选项。当然可以,但如果这是一个选项,我一开始就不会问这个问题:)