js无刷新 遍历 TreeView ,全选

MOSS结合 BI的还没处理完,先发个遍历treeview的js代码上来。不是普通的那种哦。先介绍背景。

项目由于要涉及多选,大部分位code开发,所以我使用了TreeView ,成树倒是简单了。可以遍历成了问题。

直接执行服务器端时间倒是可以解决,但是刷新成了最主要的问题。还有父子之间的联动问题。

下面提供的是遍历和父子之间,父节点选中所有子节点全选全不选的联动。

代码如下供参考:

function findAllCheckedLeaf(topdiv)//传入树的clientId, 返回所有checked叶子节点的text值

{

var reValue = '';

if(topdiv != null)

{

var isLeaf = true;

for(var i=0; i<topdiv.childNodes.length; i++)

{

var tChild = topdiv.childNodes[i];

if(tChild.tagName == 'DIV')

{

isLeaf = false;

}

}

if(!isLeaf)

{

for(var j=0; j<topdiv.childNodes.length; j++)

{

var fChild = topdiv.childNodes[j];

if(fChild.tagName == 'DIV')

{

reValue += findAllCheckedLeaf(fChild);

}

}

}

else

{

for(var k=0; k<topdiv.childNodes.length; k++)

{

var fChild = topdiv.childNodes[k];

var checkboxIndex = fChild.rows[0].cells.length - 1;

var cell = fChild.rows[0].cells[checkboxIndex];

var checkboxes = cell.getElementsByTagName('INPUT');

if (checkboxes.length == 1)

{

if(checkboxes[0].checked)

reValue += fChild.innerText+';';

}

}

}

}

return reValue;

}

 

//父子联动 关联到树的onclick事件上。

function setNodeCheckBox()

{

var element = window.event.srcElement;

if (element.tagName == 'INPUT' && element.type == 'checkbox')

{

var checkedState = element.checked;

while (element.tagName != 'TABLE')

element = element.parentElement;

var nextElement = element.nextSibling;

setChildCheckbox(nextElement,checkedState);

}

}

function setChildCheckbox(nextElement,checkedState)

{

if(nextElement != null)

{

for(var i=0;i<nextElement.childNodes.length;i++)

{

var element = nextElement.childNodes[i];

if(element.tagName == 'DIV')

{

if(element.childNodes.length != 0)

setChildCheckbox(element,checkedState);

}

if(element.tagName == 'TABLE')

{

var checkboxIndex = element.rows[0].cells.length - 1;

var cell = element.rows[0].cells[checkboxIndex];

var checkboxes = cell.getElementsByTagName('INPUT');

if (checkboxes.length == 1)

checkboxes[0].checked = checkedState;

}

}

}

}

搞定。浪费了我一下午的脑细胞。上往搜了多少个都是直接吧treeview什么的直接弄上去的。

针对不同的情况可能会有所调整,不过耐心点,找结构的层次关系。就会实现你想要的任何效果。

 

 

简直是造福民众啊。。。(写JS  it's so tired that i want to death!!)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值