Javascript Chrome浏览器:向选择框中添加选项不会';不显示在下拉列表中

Javascript Chrome浏览器:向选择框中添加选项不会';不显示在下拉列表中,javascript,google-chrome,drop-down-menu,Javascript,Google Chrome,Drop Down Menu,当用户单击selectbox时,甚至会出现Ajax 此事件将选项放置在“选择”框中 将选项放入“选择”框后,用户应该能够单击它们 在Chrome中,当您单击下拉列表时,会显示“选择一个”,但添加选项后,列表仍然是“选择一个”。用户可以点击向下箭头键并选择它,但添加选项后,它不会显示在“选项下拉列表”中 什么神奇的JS或jQuery会在不点击chrome的情况下刷新显示的下拉列表 单击该选项时,将通过JS执行: secBox = document.getElementById('sel34541_

当用户单击selectbox时,甚至会出现Ajax

此事件将选项放置在“选择”框中

将选项放入“选择”框后,用户应该能够单击它们

在Chrome中,当您单击下拉列表时,会显示“选择一个”,但添加选项后,列表仍然是“选择一个”。用户可以点击向下箭头键并选择它,但添加选项后,它不会显示在“选项下拉列表”中

什么神奇的JS或jQuery会在不点击chrome的情况下刷新显示的下拉列表

单击该选项时,将通过JS执行:

secBox = document.getElementById('sel34541_75');
secBox.length = 1;
addOption(secBox, "Option 1", "execPopDrop('sel34541_75', 34541, 'Option 1', 'type1', 'page.php')");
addOption(secBox, "Option 2", "execPopDrop('sel34541_75', 34541, 'Option 2', 'type2', 'page.php')");
addOption(secBox, "Option 3", "execPopDrop('sel34541_75', 34541, 'Option 3', 'type3', 'page.php')");
addOption(secBox, "Option 4", "execPopDrop('sel34541_75', 34541, 'Option 4', 'type4', 'page.php')");
添加选项功能如下所示:

function addOption(selectbox, text, value) {
  selectbox.options[selectbox.options.length]=new Option(text,value);
}
如果单击并单击向下箭头,我会看到动态选项在那里,但不在可见列表中。(这同样适用于IE和FF)

如果我再次单击它,我会在下拉列表中看到正确的选项


试试这个-适用于所有浏览器-如果您需要对IE4的支持,那么在添加选项之前,您需要在options.length中添加1;)

更新此解决方案适用于原始问题

function addOption(selectbox, text, value) {
  selectbox.options[selectbox.options.length]=new Option(text,value);
}
但是,为什么要将这个可怕的字符串添加到选项中

看起来您将(颤抖)评估值中的字符串

为什么不呢

addOption(secBox, "Option 1", "sel34541_75");
然后在execPopDrop中传递select,那么

function execPopDrop(sel) {
  var val = sel[sel.selectedIndex].value;
  var txt = sel[sel.selectedIndex].text;
  var type="type"+val.split(" ")[1]; // from Option 1
  var parm2 = val.replace(/[sel_]/g,""); // 34541
  // here you have all the stuff you need to do whatever you did before
}

如果可能的话,让我们先讨论第一个问题,我将在以后评估第二部分。我已经更新了“addOption”函数的代码。它仍然起作用。我已经清除了缓存。我还更新了原来的帖子,展示了CHROME的衰落。我们需要一些解决方法。演示如何以及在何处调用要添加的函数。我重新阅读了你的问题,我必须说,我不喜欢在点击select时填充类似select的内容。可能在焦点上,或者在Ajax完成后再次触发单击。实际上,您可能只需要完全替换select并使用innerHTMLI将完整select再次添加到父容器中,就像添加空白select一样,然后单击,重新填充包含select框的容器,然后单击触发器。OnFocus也可能有用。。。让我调查一下。我会在几个小时后回来。永远无法让这个工作,去了一个不同的解决方案。一个jQuery上下文菜单,它也绑定到click事件,对此的简短回答是,不要麻烦!在Focus、Hover、onClick等上操作都是浪费时间。相反,我使用了一种更优雅的解决方案,并在点击一个跨距后,在右键和左键上创建了一个“上下文菜单”。更少的代码,更少的出错空间,更大的兼容性!