2006-01-17

checkbox分级操作(不同名)

来源: 本站收集整理 作者:佚名 评论 0 条
 

<title>CheckBox</title>
<script language=javascript defer>
var n=document.getElementsByTagName("INPUT");
var CheckBoxNum=n.length;
var SubNodeCheckSome,SameNodeCheckSome,tf,SearchNodeName;

var SearchParentNodeName,SameNodeNum,SubNodeCheckedNum;

varSameNodeCheckedNum,SubNodeNum,SubNodeCheckedTF;

function FindParentNode(SubNodeName) //获取上级结点名,并判定是否被选中
{
tf=false; //初始化选中状态
SearchNodeName=SubNodeName;
t=SubNodeName.lastIndexOf("_"); //判定是否存在上级结点
if(t!=-1)SearchNodeName=SubNodeName.substring(0,t); //假如存在上级结点,取得上级结点名
if(document.all(SubNodeName).checked)tf=true; //判定结点是否被选中
return SearchNodeName;
}

function CheckSubNode(NodeName) //获取结点名,并判定子结点是否选中
{
SubNodeCheckedTF=false; //初始化子结点选中状态
SubNodeNum=0; //初始化子结点数目
SameNodeNum=0; //初始化同级结点数目
SubNodeCheckedNum=0; //初始化子结点被选中的数目
SameNodeCheckedNum=0; //初始化同级结点被选中的数目
SubNodeCheckSome=0; //初始化子结点半选数目
SameNodeCheckSome=0; //初始化同级结点半选数目
ParentNodeName=FindParentNode(NodeName); //取得上级结点名
SearchParentNodeName=NodeName; //当前结点名
d=NodeName.lastIndexOf("_"); //判定是否存在上级结点
if(d!=-1)SearchParentNodeName=SearchParentNodeName.substring(0,d);//假如存在上级结点,取得上级结点名
for(i=0;i<CheckBoxNum;i )
{
if(n[i].name.length==NodeName.length&&ParentNodeName==FindParentNode(n[i].name))
{
SameNodeNum =1; //同级结点数目加一
if(n[i].checked)SameNodeCheckedNum =1; //同级结点被选中的数目加一
if(n[i].indeterminate)SameNodeCheckSome =1; //同级结点半选数目加一
}
if(n[i].name.substring(0,NodeName.length)==NodeName&&n[i].name!=NodeName&&n[i].type=="checkbox")
{
SubNodeNum =1; //子结点数数目加一
if(n[i].checked)SubNodeCheckedNum =1; //子结点被选中的数目加一
if(n[i].indeterminate)SubNodeCheckSome =1; //子结点半选数目加一
}
}

if((SameNodeNum==1||SameNodeCheckedNum==0)&&(SubNodeCheckedNum==0)&&!document.all(NodeName).checked)
SubNodeCheckedTF=true; //判定子结点是否被选中
if((SameNodeNum>=0&&SameNodeCheckedNum<SameNodeNum)||SameNodeCheckSome>0||SubNodeCheckSome>0)
document.all(SearchParentNodeName).indeterminate=true;//将上级选中状态改为半选
if((SameNodeCheckedNum==SameNodeNum||SameNodeCheckedNum==0)&&SubNodeCheckSome==0&&SameNodeCheckSome==0)
document.all(SearchParentNodeName).indeterminate=false;//取消上级半选状态
return SearchParentNodeName;
}

function CheckAll(BoxName)
{
SearchNodeName=BoxName;
共3页: 上一页 1 [2] [3] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:深入浅出SQL教程之SELECT语句的自连接  
下一篇:PHP沉思录
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号