if(ifFind){
          var o=new Option(e.id,e.value);
          sel.add(o);
        }即可

解决方案 »

  1.   

    if (e.type=="checkbox" && e.name != "selAll" && !e.checked) e.checked=true; 不会触发click事件。
      

  2.   

    function selAllItems(f) {
    form = document.getElementById(f);
    for(i=0;i< form.length;i++) {
    e=form.elements[i];
    if (form.selAll.checked) {
    if (e.type=="checkbox" && e.name != "selAll" && !e.checked) {
    e.checked=true;changeSel(e.id);
    }
    } else {
    if (e.type=="checkbox" && e.name != "selAll" && e.checked)  e.checked=false;
    }
    }
    }
      

  3.   

    to net_lover(孟子E章):
       好像不对吧to emu(ston) :
       你的方法是正确的,但我不明白为什么我写的 changeSelAll()不起作用
      

  4.   

    将你的ifFind = new Boolean(false);改为
    ifFind = false;
      

  5.   

    呵呵..觉得你的问题很有趣... 所以我也花了点时间写了一个.
    代码比较烂.. 各位高手莫笑. ^_^<BODY>
    <form id=dof >
    <input type=checkbox id=id1 name=attriChecks value=value1 ><br>
    <input type=checkbox id=id2 name=attriChecks value=value2 ><br>
    <input type=checkbox id=id3 name=attriChecks value=value3 ><br>
    <input type=checkbox id=id4 name=attriChecks value=value4 ><br><input type="checkbox" name="selAll">全选<br>
    <select name=attriSel id=buffer size=10 multiple ></select>
    </form>
    </BODY><script>
    var form=document.all.dof,sel=form.buffer,cks=form.attriChecks;for(i=0;i<form.length;i++){
     if(form[i].type=='checkbox'){
        form[i].onclick=function (){addItem(this)};
       if(form[i].name=="selAll") form[i].onclick=function (){selAll(this)};
     }
    }function addItem(obj){
     if(obj.name!="selAll"){
       if(obj.checked){
         sel.add(new Option(obj.id,obj.value));
       }else{
        for(i=0;i<sel.length;i++){if(sel[i].value == obj.value)   sel.remove(i--);
    }
       }
     }
    var cCount=0;
    for(i=0;i<cks.length;i++){
    (cks[i].checked)?cCount++:cCount=0;
    }
    form.selAll.checked=(cCount==cks.length)?true:false;
    }function selAll(obj){
    for(i=0;i<cks.length;i++)
    if(obj.checked){
     if(!cks[i].checked) cks[i].checked=true,sel.add(new Option(cks[i].id,cks[i].value));;
    }else{
    cks[i].checked=false;
    sel.length=0;
    }}
    </script>
      

  6.   

    哦.. addIteam 里的那个判断可以不要...因为obj.name 根本不可能等于
    selAll . :)if(obj.name!="selAll"){ .... }
      

  7.   

    to freefalcon(心宇) :
      我写的最初版本就是ifFind = false;也不行,你试试先勾上一个checkbox,再勾"全选",看看select框发生了什么.
      

  8.   

    那是因为你还有一处地方写错了,changeSelAll()函数中的if( e.id==sel[j].id )应为if( e.id==sel[j].text)
    select中显示出来的是text属性,另一个用于传值的是value属性,而不是id
      

  9.   

    其实我写的是错的,没有仔细看。你既然有changeSelAll就不用改selAllItems了。不过既然这两个函数都只在同一个地方调用,为什么不只用一个呢?此外do是保留字,不要用来做form的id。
      

  10.   

    to freefalcon(心宇) :
      我太粗心了,呵呵,没发现这个错误 :)to emu(ston) :
      写在末尾的几个函数是通用的,还要用于其他页面.感谢各位的指点!谢谢!