Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改下拉列表的内容时,它';什么地方开门?_Javascript_Browser_Drop Down Menu - Fatal编程技术网

Javascript 更改下拉列表的内容时,它';什么地方开门?

Javascript 更改下拉列表的内容时,它';什么地方开门?,javascript,browser,drop-down-menu,Javascript,Browser,Drop Down Menu,我有一个用一些项目填充的下拉列表。当用户选择其中一个时,我希望下拉列表保持打开状态,并重新填充新项目。然后用户选择其中一个,最后下拉菜单关闭 可以用JavaScript实现吗?如果是这样的话,怎么做?如果不将本机控件替换为。用于科学!我已经创建了一个替代答案来测试这一点。您可以检查是否包含此HTML: 单击打开下拉列表 不要选择这个! 以及以下Javascript: var t = 10; var x = window.setInterval(function() { consol

我有一个用一些项目填充的下拉列表。当用户选择其中一个时,我希望下拉列表保持打开状态,并重新填充新项目。然后用户选择其中一个,最后下拉菜单关闭


可以用JavaScript实现吗?如果是这样的话,怎么做?

如果不将本机控件替换为。

用于科学!我已经创建了一个替代答案来测试这一点。您可以检查是否包含此HTML:


单击打开下拉列表
不要选择这个!
以及以下Javascript:

var t = 10;

var x = window.setInterval(function() {
    console.log(--t);
    if (t === 0) { act(); }
}, 1000);

function act() {
    var select = document.getElementById('y');
    var newOption = document.createElement('option');
    newOption.innerHTML = "this option will not appear if the select is open while it's added";
    select.appendChild(newOption);
}
如果打开下拉列表并保持其打开状态直到计时器过期,您将看到以下行为:

  • ✗ Chrome 29:在重新打开+下拉菜单适应新选项的宽度之前,选项不可见
  • ✗ IE10/9/8:与Chrome 29+相同,它强制折叠打开的下拉列表
  • ✓ Firefox 23:添加无需重新打开的选项+调整新选项的宽度

@Thomas一个自定义控件是用CSS/JavaScript制作的-在一个项目的点击处理程序上,你不需要隐藏选项,然后添加额外的选项。当下拉列表打开时,JavaScript将如何更改控件的内容?如果用户不移动鼠标,浏览器将如何使用新内容重新绘制屏幕?@Thomas自定义控件中的选项可能是
li
元素,因此只需添加一个即可。我认为你没有完全理解我的建议。IE的行为仍然是可以接受的,或者至少对用户来说,它比Chrome的行为更容易混淆。对解决方法有什么建议吗?顺便说一句,我刚刚报告说这是一个Chrome bug。谢谢你的小提琴,它节省了我一些时间。