js實現點中子節點父節點自動選中

來源:互聯網
上載者:User

 <script type="text/javascript" language="javascript">
     function setParentState(objNode) {
        var objParentDiv = WebForm_GetParentByTagName(objNode, "div");
        if (objParentDiv == null || objParentDiv == "undefined")
            return;

        var divID = objParentDiv.getAttribute("ID");
        var prefix = divID.substring(0, divID.indexOf("Nodes"));
        var parentID = prefix + "CheckBox";

        var parentChk = document.getElementById(parentID);
        if (parentChk == null || parentChk == "undefined")
            return;

        if (objNode.checked) {
            parentChk.checked = true;
        }
        else {
            if (isAllChildrenUnChecked(parentChk)) {
                parentChk.checked = false;
            }
        }

        setParentState(parentChk);
    }

    function setChildState(objNode)//設定子控制項狀態
    {
        var nodeID = objNode.getAttribute("ID");   //chkBox ID
        var prefix = nodeID.substring(0, nodeID.indexOf("CheckBox"));  //節點的首碼
        var childrenDiv = document.getElementById(prefix + "Nodes");

        if (childrenDiv == null || childrenDiv == "undefined")
            return;

        var childrenArray = childrenDiv.children; //取得所有子控制項

        for (var i = 0; i < childrenArray.length; i++) {
            var container = childrenArray[i]; //子控制項的容器
            var chk = WebForm_GetElementByTagName(container, "input"); //尋找Check控制項,由於只有一個種Input控制項,就是CheckBox
            chk.checked = objNode.checked;

            setChildState(chk);

        }

    }

    function isAllChildrenUnChecked(objChk) {
        var objChkID = objChk.getAttribute("ID");
        var prefix = objChkID.substring(0, objChkID.indexOf("CheckBox"));  //節點的首碼
        var childrenDiv = document.getElementById(prefix + "Nodes");

        if (childrenDiv == null || childrenDiv == "undefined")
            return;

        var childrenArray = childrenDiv.children; //取得所有子控制項

        for (var i = 0; i < childrenArray.length; i++) {
            var container = childrenArray[i]; //子控制項的容器
            var chk = WebForm_GetElementByTagName(container, "input"); //尋找Check控制項,由於只有一個種Input控制項,就是CheckBox

            if (chk.checked)
                return false;
        }
        return true;
    }

    //觸發事件
    function HandleCheckEvent() {

        var objNode = event.srcElement;

        if (objNode.tagName != "INPUT" || objNode.type != "checkbox")
            return;

        //設定子Chk狀態
        setChildState(objNode);
        //設定父Chk狀態
        setParentState(objNode);

    }
    </script>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.