日期:2014-05-16  浏览次数:20413 次

如个通过已有的数据生成表格显示出来.
如题,数据是任意的.不知道谁有办法...

比如说数组:
var   arr   =   new   Array();
arr[00007]   =   [ "a ",   00004];
arr[00009]   =   [ "b ",   00004];
arr[00013]   =   [ "c ",   00009];
arr[00014]   =   [ "d ",   00009];
arr[00015]   =   [ "e ",   00014];
arr[00026]   =   [ "f ",   00004];
arr[00031]   =   [ "g ",   00013];
arr[00033]   =   [ "h ",   00013];
arr[00034]   =   [ "i ",   00026];

显示结果为:
┏━━━━┳━━━━┳━━━━━┓
┃   第一组   ┃   第二组   ┃     第三组     ┃
┣━━━━╋━━━━╋━━━━━┫
┃       a         ┃                 ┃                     ┃
┣━━━━╋━━━━╋━━━━━┫
┃       b         ┃                 ┃         g           ┃
┃                 ┃         c       ┣━━━━━┫
┃                 ┃                 ┃         h           ┃
┃                 ┣━━━━╋━━━━━┫
┃                 ┃         b       ┃         e           ┃
┣━━━━╋━━━━╋━━━━━┫
┃       f         ┃         i       ┃                     ┃
┗━━━━┻━━━━┻━━━━━┛

------解决方案--------------------
所以这个是递归的循环,感觉最好要重新设计下,这个有些象树,而树又不用设置rowspan,所以这么写比写树的方法还要复杂
------解决方案--------------------
可以实现的,我假设你给出的数组可以构成一颗完整的树(你现在的代码里就没有00004的节点,不是完整的). 那么就把数据构造成一颗树,则,树的最大深度就是表的列数,树的所有叶子节点数就是表格的行数(没算表头).

如果节点N在树的第i层,也就是在表格的第i列(从1开始的),如果以节点N为根的子树有k个子叶子节点,则节点N的rowspan值就是k,叶子节点没有子节点,所以rowspan为1.

再遍历一遍表格就可以把数据添加到表里了.