会变的原因在于hide(); hide是通过style.display="none"来显示的,要位置不变用style.visibility来控制
看你代码貌似jquery,
你可以这样
if(..)//显示a的条件
{
   $("#a").css("visibility","visible");
   $("#b").css("visibility","hidden");
}else
{
   $("#a").css("visibility","hidden");
   $("#b").css("visibility","visible");}

解决方案 »

  1.   

    你把一个先隐藏起来不就不闪了
    <html>
    <head>
    <script language="javascript" src="jquery-1.2.6.js"></script>
    <script language="javascript">
    function ctrSel(selId)
    {
        var id=selId=="a"?"b":"a";
        $("#"+selId).show();
        $("#"+id).hide();
    }
    </script>
    </head>
    <body><select id="a"> 
    <option>aa </option> 
    <option>aaaa </option> 
    </select> 
    <select id="b" style="display:none"> 
    <option>bb </option> 
    <option>bbbb </option> 
    </select>
    <br />
    <input type="button" value="display a only" onclick="ctrSel('a')" />
    <input type="button" value="display b only" onclick="ctrSel('b')" />
    </body>
    </html>
      

  2.   

    我测试了,我上面代码在IE6下,基本没有闪动,可能你的SELECT布局和我不一样,把你的HTML布局贴出来看看
      

  3.   

    这是一个很隐蔽的现象,不是所有的时候都出现的,比如说我有时点中菜单,滑动鼠标滑轮,随便再乱操作什么的,这种现象就出现了,所一我准备改变方针,不再使用hide的了,我准备采取其它方法了,谢谢啊
      

  4.   

    我用jquery做了一个左右选择框。可是在IE6下老是闪呀。我不知道该怎么办