3

我对dropdown菜单有一个奇怪的问题。

我有

company.prototype.buildTable=function(){
  var thisObj=this;

  tableTD = createElement('td');
  tableTD.onclick=function(){thisObj.edit(this);}
  this.table.appendChild(tableTD);  //append td to the table

  // more td

}

company.prototype.edit = function(thisRow) {
  $thisRow=$(thisRow);
  var menu=document.createElement('select');
      menu.className='menu';

   //employees is an array containing employee info

   for(var i=0; i<employees.length; i++){

           var option=document.createElement('option');
               option.className='option';
               option.innerHTML=employees[i].name;
               option.value=employees[i].email;

            menu.appendChild(option);
         }

   $thisRow.append(selectMenu);
}

我可以在我的 td 中看到一个dropdown菜单。但是,当我单击菜单时,我必须按住鼠标以保持选项打开,否则选项菜单将关闭。即使我按住鼠标并选择一个选项,dropdown菜单值也不会改变(它仍然显示选择菜单中的第一个选项)。我希望我能很好地解释我的问题。

谁能帮我解决这个奇怪的问题?

4

1 回答 1

0

IIRC,将选项附加为 DOM 元素存在一些奇怪的跨浏览器问题。添加选项的首选方法很简单:

menu.options[i] = new Option(employees[i].name, employees[i].email);

编辑

不要在 select 上使用 appendChild,也不要在 select 元素上使用 innerHTML。TL;DR:HTMLSelectElement很特别,在 IE 中有怪癖

于 2013-01-04T19:57:42.383 回答