日期:2014-05-16  浏览次数:20345 次

js实现复选框的全选与反选



    <script language="javascript">
// --列头全选框被单击---
function ChkAllClick(sonName, cbAllId){
    var arrSon = document.getElementsByName(sonName);
 var cbAll = document.getElementById(cbAllId);
 var tempState=cbAll.checked;
 for(i=0;i<arrSon.length;i++) {
  if(arrSon[i].checked!=tempState)
           arrSon[i].click();
 }
}

// --子项复选框被单击---
function ChkSonClick(sonName, cbAllId) {
 var arrSon = document.getElementsByName(sonName);
 var cbAll = document.getElementById(cbAllId);
 for(var i=0; i<arrSon.length; i++) {
     if(!arrSon[i].checked) {
     cbAll.checked = false;
     return;
     }
 }
 cbAll.checked = true;
}

// --反选被单击---
function ChkOppClick(sonName){
 var arrSon = document.getElementsByName(sonName);
 for(i=0;i<arrSon.length;i++) {
  arrSon[i].click();
 }
}
    </script>



<input name="chkAll" id="chkAll" title="全选" onclick="ChkAllClick('chkSon','chkAll')"
                type="checkbox" />全选
            <input name="chkOpposite" id="chkOpposite" title="反选" onclick="ChkOppClick('chkSon')"
                type="checkbox" />反选

我想要的效果是这样的:


现在的效果是这样的:

------解决方案--------------------
For line 9 in your code,why not like this:

arrSon[i].checked=tempState;