判断数据动态隐藏行
最近在解决客户问题的时候,遇到一个问题,觉得这种需求比较普遍,写一篇文章介绍一下。
问题描述:
如下图的一张表:
预览如下:
不难看出101-103是10的下级,111-113是11的下级,以此类推。
需求:
若所有下级所对应的值(即value,value2)都为0,即连同上下级一同隐藏。
以12为例子:
若121对应的那一行全部为0,则12,121,122,123这4行数据全部隐藏。
若子级自己对应的数据都为0,则该行隐藏。
以12为例子:
122和123都对应的值都是0,那么这两行隐藏,12和121行保留。
这个需要通过js来动态判断行的值,然后设置行的隐藏属性。
Js如下:
function hiddenzz()
{
for(var i=0;i<document.getElementById(“report1″).rows.length;i++)//取到报表行数
{
var a=”1″;
if(document.getElementById(“report1″).rows[i].cells[0].value.length==3)//只去遍历子级格子后面的格子值,格子值长度为3的即为子级
{
for(var j=1;j<document.getElementById(“report1″).rows[i].cells.length;j++)//遍历该行所有格子中的值
{
Var cellValue=document.getElementById(“report1″).rows[i].cells[j].value;
if(cellValue!=0)
{
a=”2″;
break;
}
//alert(i+”;”+j+”;”+cellValue);
//alert(“a的值是:“+a);
}
if(a==”1″)
{
if(document.getElementById(“report1″).rows[i-1].cells[0].value.length==2 && a==”1″)
{
document.getElementById(“report1″).rows[i-1].style.display=”none”;//隐藏当前行的上一行
}
document.getElementById(“report1″).rows[i].style.display=”none”;//隐藏当前行
}
}
}
}