【问题标题】:Adding an option to a select does not work in Internet Explorer向选择添加选项在 Internet Explorer 中不起作用
【发布时间】:2016-09-08 10:02:25
【问题描述】:

问题

如果您随后通过 JavaScript 将选项添加到选择中,一切似乎都很好。

但是,如果您有一个通过数据库填写的表格,例如并且该选择中的一个选项被预选 Internet Explorer 失败:它始终是预选的下一个选项。

所有其他浏览器都可以正常工作。

示例

这是一个工作示例:

var oSelect = document.getElementById('myselect');
var oOption = document.createElement('option');
oOption.text = '- - - my fabulous new option - - -';
oSelect.add(oOption, oSelect[3]);
<select id="myselect">
  <option value="Algeria,DZA">Algeria</option>
  <option value="American Samoa,ASM">American Samoa</option>
  <option value="Andorra,AND">Andorra</option>
  <option selected value="Angola,AGO">Angola</option>
  <option value="Anguilla,AIA">Anguilla</option>
  <option value="Antarctica,ATA">Antarctica</option>
</select>

JSFiddle

这里是JSFiddle

问题

你知道为什么 IE 在这里会有不同的反应吗?

提前致谢!

【问题讨论】:

    标签: javascript html internet-explorer dom browser


    【解决方案1】:

    插入“您的绝妙新选择”会引入困难。 ;)

    如果您将其作为第 5 个条目插入 (oSelect[4]),IE 将保持 html 的选定值 "Angola,AGO" 处于选中状态。然而,在这个条目之前添加一些东西会使事情变得混乱。问题是它会选择 entry [3] 而不检查 "Angola,AGO" 是否仍然保持该位置。

    编辑/解决方法

    通过 JScript 进行选择也适用于 IE。瞧,它总是需要额外的

    var oSelect = document.getElementById('myselect');
    var oOption = document.createElement('option');
    oOption.text = '- - - my fabulous new option - - -';
    oSelect.add(oOption, oSelect[3]);
    
    // oSelect.value = "Angola,AGO";  <-- changed because of comments
    oSelect.value = oSelect.options[oSelect.selectedIndex].value;
    <select id="myselect">
      <option value="Algeria,DZA">Algeria</option>
      <option value="American Samoa,ASM">American Samoa</option>
      <option value="Andorra,AND">Andorra</option>
      <option selected value="Angola,AGO">Angola</option>
      <option value="Anguilla,AIA">Anguilla</option>
      <option value="Antarctica,ATA">Antarctica</option>
    </select>

    【讨论】:

    • 我明白了。谢谢你。下一点是我对选择没有影响;直接来自CMS。所以我必须在添加“我的神话般的新选项”之前检测选择了哪个选项。但这应该有效;)
    • 确定你已经发现了 - 但为了将来参考,它是:oSelect.options[oSelect.selectedIndex].value; :)
    • 已经实现。工作正常。很好的解决方法,感谢您的建议。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 2010-09-24
    • 2012-01-04
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2011-10-23
    相关资源
    最近更新 更多