Javascript Scriptaculous Builder未在FireFox中设置所选值

Javascript Scriptaculous Builder未在FireFox中设置所选值,javascript,prototypejs,scriptaculous,builder,Javascript,Prototypejs,Scriptaculous,Builder,我正在尝试构建一个选择选项列表,并对其应用默认值。它似乎在Chrome中起作用,但在Firefox中不起作用。我的代码是: var sel2 = Builder.node('select',{ name: 'type_' + tId, id: 'type_' + tId }); $A(templateTypes).each(function(t,idx){ var o = Builder.node('option',{value:dataID},DataName); sel2.a

我正在尝试构建一个选择选项列表,并对其应用默认值。它似乎在Chrome中起作用,但在Firefox中不起作用。我的代码是:

var sel2 = Builder.node('select',{
  name: 'type_' + tId,
  id: 'type_' + tId
});
$A(templateTypes).each(function(t,idx){
  var o = Builder.node('option',{value:dataID},DataName);
  sel2.appendChild(o);
  if (curID == dataID) {
    $(sel2).selectedIndex = idx;
  }
});
我试过这样的方法:

if (curID == dataID) {
  var o = Builder.node('option',{value:dataID,selected:'selected'},DataName);
}
即使在Firebug中设置selected=selected,它也不适用于显示的内容。硬刷新似乎也解决不了这个问题

是否有人有一个可以跨所有浏览器工作的解决方案


谢谢

在选择框中添加新节点似乎会让Firefox感到困惑。这个怎么样

var sel2 = Builder.node('select',{
  name: 'type_' + tId,
  id: 'type_' + tId
});

// store the desired index in this
var selectedIndex = 0;

$A(templateTypes).each(function(t,idx){
  var o = Builder.node('option',{value:dataID},DataName);
  sel2.appendChild(o);
  if (curID == dataID) {
    selectedIndex = idx;
  }
});

// now set the selected index _after_ we've added all the options:
sel2.selectedIndex = selectedIndex;
在我的简短测试中似乎有效