JavaScript 循环递归优化问题
代码如下:functionSelectAll(iIndex){vartree;if(iIndex==1)tree=igtree_getTreeById("ulTreeMe...
代码如下:
function SelectAll(iIndex)
{
var tree;
if(iIndex==1)
tree=igtree_getTreeById("ulTreeMenuR");
else
tree=igtree_getTreeById("ulTreeMenuW");
var nodes=tree.getNodes();
for(var i=0;i<nodes.length;i++)
{
nodes[i].setChecked(true);
nodes[i].setExpanded(true);
if(nodes[i].hasChildren())
{
alert(nodes[i].getChildNodes().length);
SelectNode(nodes[i])
}
}
}
function SelectNode(iNode)
{
if(!iNode.hasChildren())
return;
var vNodes=iNode.getChildNodes();
for(var i=0;i<vNodes.length;i++)
{
vNodes[i].setChecked(true);
vNodes[i].setExpanded(true);
SelectNode(vNodes[i]);
}
}
是点击全选按钮,然后把树形结构的所有节点全选!但树形结构的数据量太大,点击后会造成IE假死…等它运行完成已经是十几分钟之后的事了。
现在就是想请求一下各位高手,能不能优化这两个方法! 展开
function SelectAll(iIndex)
{
var tree;
if(iIndex==1)
tree=igtree_getTreeById("ulTreeMenuR");
else
tree=igtree_getTreeById("ulTreeMenuW");
var nodes=tree.getNodes();
for(var i=0;i<nodes.length;i++)
{
nodes[i].setChecked(true);
nodes[i].setExpanded(true);
if(nodes[i].hasChildren())
{
alert(nodes[i].getChildNodes().length);
SelectNode(nodes[i])
}
}
}
function SelectNode(iNode)
{
if(!iNode.hasChildren())
return;
var vNodes=iNode.getChildNodes();
for(var i=0;i<vNodes.length;i++)
{
vNodes[i].setChecked(true);
vNodes[i].setExpanded(true);
SelectNode(vNodes[i]);
}
}
是点击全选按钮,然后把树形结构的所有节点全选!但树形结构的数据量太大,点击后会造成IE假死…等它运行完成已经是十几分钟之后的事了。
现在就是想请求一下各位高手,能不能优化这两个方法! 展开
展开全部
对树操作时间大,那就换个思路嘛,直接处理html元件就快了,
既然能全选,那必然用了checkbox
假设你的checkbox都是放在一个id为"mytree"的div里,
给你我在用的js:
function checkAll(x):是所有id中包含x变量的input,你可以继续添加其他条件
var objs = document.getElementsByTagName("input");
这句可以改成document.getElementById("mytree").getElementsByTagName("input");
只操作树中的input速度会更快些
<script>
function checkAll(x){
var objs = document.getElementsByTagName("input");
for(var i=0; i<objs.length; i++){
if(objs[i].type.toLowerCase() == "checkbox" )
if(objs[i].name.toLowerCase().indexOf(x) >-1){
objs[i].checked = true;
}
}
}
</script>
既然能全选,那必然用了checkbox
假设你的checkbox都是放在一个id为"mytree"的div里,
给你我在用的js:
function checkAll(x):是所有id中包含x变量的input,你可以继续添加其他条件
var objs = document.getElementsByTagName("input");
这句可以改成document.getElementById("mytree").getElementsByTagName("input");
只操作树中的input速度会更快些
<script>
function checkAll(x){
var objs = document.getElementsByTagName("input");
for(var i=0; i<objs.length; i++){
if(objs[i].type.toLowerCase() == "checkbox" )
if(objs[i].name.toLowerCase().indexOf(x) >-1){
objs[i].checked = true;
}
}
}
</script>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询