ASP.NET 2.0 Treeview Checkboxes - Check All - Javascript (兼容firefox和IE)

1、脚本
<script language="javascript" type="text/javascript">
function client_OnTreeNodeChecked(event)
{
    var obj;
    if(event.srcElement!=null )
    {
        obj = event.srcElement;
    }
    else
    {
        obj = event.target;
    }
   

    var treeNodeFound = false;
    var checkedState;
    if (obj.tagName == "INPUT" && obj.type == "checkbox")
    {
        var treeNode = obj;
        checkedState = treeNode.checked;
        do
        {
            obj = obj.parentNode;
        } while (obj.tagName != "TABLE")
        var parentTreeLevel = obj.rows[0].cells.length;
        //var parentTreeNode = obj.rows[0].cells[0];
        var tables = obj.parentNode.getElementsByTagName("TABLE");
        var numTables = tables.length
        if (numTables >= 1)
        {
            goDeeperUnChecked(obj);
            for (i=0; i < numTables; i++)
            {
                if (tables[i] == obj)
                {

                    treeNodeFound = true;
                    i++;
                    if (i == numTables)
                    {
                        return;
                    }
                }
                if (treeNodeFound == true)
                {
                    var childTreeLevel = tables[i].rows[0].cells.length;
                    if (childTreeLevel > parentTreeLevel)
                    {
                        var cell = tables[i].rows[0].cells[childTreeLevel - 1];
                        var inputs = cell.getElementsByTagName("INPUT");
                        inputs[0].checked = checkedState;
                    }
                    else
                    {
                       
                        return;
                    }
                }
            }
        }
      }
}
function goDeeperUnChecked(obj)
{

    var chk1 = false;
    //Get the mom.
    var head1 = obj.parentNode.previousSibling;
    //no rows, cant do my work.
    if(obj.rows == null)
    {
        return ;
    }

    //This is how may rows are at this level.
    var pTreeLevel1 = obj.rows[0].cells.length;
    //Are we a mommy?
    if(head1.tagName == "TABLE")
    {
        //Get the list of rows ahead of us.
        var tbls = obj.parentNode.getElementsByTagName("TABLE");
        //get the count of that list.
        var tblsCount = tbls.length;


        //determine if any of the rows underneath are unchecked.
        for (i=0; i < tblsCount; i++)
        {
            var childTreeLevel = tbls[i].rows[0].cells.length;
            if (childTreeLevel = pTreeLevel1)
            {
                var chld = tbls[i].getElementsByTagName("INPUT");
                if (chld[0].checked == false)
                {
                    chk1 = false;
                    goDeeperUnChecked(head1);//递归向上判断
                    break;
                }
            }
        }
        var nd = head1.getElementsByTagName("INPUT");
        nd[0].checked = chk1;
        //do the same for the level above
        goDeeperUnChecked(obj.parentElement);
       
    }
    else
    {
        return;
    }
}
</script>
2、使用
<asp:TreeView ID="tvWebSite" onclick="client_OnTreeNodeChecked(event);" runat="server">   
   <SelectedNodeStyle BackColor="Silver" ForeColor="White" />
</asp:TreeView>

你可能感兴趣的:(JavaScript)