• javascript checkbox 全选


    <input type="checkbox" name="checkC" onClick="resAll()">1
    <input type="checkbox" name="checkC" onClick="resAll()">2
    <input type="checkbox" name="checkC" onClick="resAll()">3
    <input type="checkbox" name="checkC" onClick="resAll()">4
    <input type="checkbox" name="checkC" onClick="resAll()">5
    <input type="checkbox" name="checkC" onClick="resAll()">6
    <input type="checkbox" name="checkC" onClick="resAll()">7
    <input type="checkbox" name="all" id="all" onClick="checkAll()">全选
    <script type="text/javascript" language="javascript">
    function checkAll(){
    	var d = document,
    	items=d.getElementsByName("checkC"),
    	itemall = d.getElementById("all"),
    	len = items.length;
    	for(var i=0;i<len;i++){
    		items[i].checked=itemall.checked;
    	}
    }
    function resAll(){
    	var d = document,
    	items=d.getElementsByName("checkC"),
    	itemall = d.getElementById("all"),
    	ite=0;
    	for(var i=0;i<items.length;i++){
    		if(items[i].checked){
    		 ite++;
    		}
    	}
    	if(ite==items.length-1&&itemall.checked){
    		itemall.checked=false;
    	}
    	if(ite==items.length&&!itemall.checked){
    		itemall.checked=true;
    	}
    }
    </script>
    

    注意:getElementsByName的兼容性问题。

    1.name 和  id 属性一起抓

    <input type="checkbox" name="checkC" onClick="resAll()">1
    <input type="checkbox" id="checkC" onClick="resAll()">2

    IE下:document.getElementsByName.length =2
    FF下:document.getElementsByName.length =1

    2.如果标签没有name属性不会抓取

    <input type="checkbox" name="checkC" onClick="resAll()">1
    <input type="checkbox" id="checkC" onClick="resAll()">2
    <p name="checkC">3</p>
    IE下:document.getElementsByName.length =2
    FF下:document.getElementsByName.length =3

    考虑到IE这种问题,尽量避免使用getElementsByName
    尽量使用: document.getElementsByTagName('input')

    <div id="box" style="height:20px; background-color:#ccc;">
    <input type="checkbox">1
    <input type="checkbox">2
    <input type="checkbox">3
    <input type="checkbox">4
    <input type="checkbox">5
    <input type="checkbox">6
    <input type="checkbox">7
    <input type="checkbox" id="all2">全选
    </div>
    <script type="text/javascript">
    var EventUtil = {
    
        addHandler: function(element, type, handler){
            if (element.addEventListener){
                element.addEventListener(type, handler, false);
            } else if (element.attachEvent){
                element.attachEvent("on" + type, handler);
            } else {
                element["on" + type] = handler;
            }
        },
    	getEvent: function(event){
            return event ? event : window.event;
        },
    	 getTarget: function(event){
            if (event.target){
                return event.target;
            } else {
                return event.srcElement;
            }
        }
    }
    EventUtil.addHandler(window,"load",function(){
    	var box = document.getElementById('box'),
    	dga = document.getElementById('all2'),
    	boxItem= box.getElementsByTagName('input'),
    	len = boxItem.length-1;
    	EventUtil.addHandler(box,'click',function(e){
    		var e = EventUtil.getEvent(e),target = EventUtil.getTarget(e);
    		if(target.nodeName =='INPUT' && target.id =='all2'){
    			if(target.checked){
    				for(var i=0;i<len;i++){
    					boxItem[i].checked=true;
    				}
    			}
    			else{
    				for(var i=0;i<len;i++){
    					boxItem[i].checked = false;
    				}
    			}
    		}
    		else{
    			var ite=0;
    			for(var i=0;i<len;i++){
    				if(boxItem[i].checked){
    				 ite++;
    				}
    			}
    			if(ite==len-1){
    				dga.checked=false;
    			}
    			if(ite==len){
    				dga.checked=true;
    			}	
    		}
    	});
    })
    </script>
    
      

  • 相关阅读:
    settTimeout vs setInterval
    JS继承
    JS创建对象
    原型链
    开始学习python的感受
    Problem 29
    Python 查看关键字
    Problem 21
    Problem 34
    Problem 42
  • 原文地址:https://www.cnblogs.com/jsoo/p/2117216.html
Copyright © 2020-2023  润新知