var oListbox =document.getElementById("sellistbox");
ListUtil.shiftUp= function(oListbox, iIndex) {
   if(iIndex > 0){
     var oOption = oListbox.options(iIndex);
     var oPrevOption=oListbox.options(iIndex-1);
     oListbox.insertBefore(oOption, oPrevOption);
     }
};疑问是:插入oOption 到 oPrevOption 之前。 但原来的oOption怎么就被remove 了吗? 按照insertBefore来说只是插入么,没说删除掉原来的啊?
比如现在: 1 ,2。 现在我要把2提前, 用这方法书上说会:2,1 但我个人理解为2,1,2。  这是我的一个比方。 请大家帮我点明下,谢谢! 我哪里疏忽了,正在学习中!

解决方案 »

  1.   

    但我个人理解为2,1,2
    re:
    这是插入么?象clone吧!在元素没有存放点时.它只存在与内存中.跟文档中的元素没任何关系.象:
    document.createElement("a") 
      

  2.   

     楼主的算法有些问题,
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    你想在第二个的前面加入一个值,那么
     var oOption = oListbox.options(iIndex-1);
         var oPrevOption=oListbox.options(iIndex-2);
    它俩应该这样写,索引是从0开始的,而你原来的做法是 :
    首先获得bc两项,然后
    把c的值插在b的前面,这样就是颠倒了bc的位置,你应该这样
     var oOption = oListbox.options(iIndex-1);
         var oPrevOption=oListbox.options(iIndex-2);
    然后添加一个option(document.createElement(“option”)),然后在添加就没事了
      

  3.   

    貌似有点被点开了, 你的意思是  oListbox.options(iIndex);oListbox.options(iIndex-1);其实都是存在内存中的2个对象,我    var oOption = oListbox.options(iIndex);
     var oPrevOption=oListbox.options(iIndex-1);只是取到他们,然后insertBefore是安排他们的顺序,对不? 不是简单的插入。
    前面看的急了,对insertBefore可能就没理解好:) 我这样理解对不?