名称 数量 定额 
a     6   1
a1    6   60
a2    6   60
a21   3   30
a22   3   30
a3    2   20
a1\a2\a3是a的下级,通过f_id 来关联。如果修改a的数量,则所有a开头的定额都要乘以一个数比如2吧。如果修改a2,则只变动a2下面的a21、a22 的定额值变动乘以2.如此循环。如果a22下面还有a221、a222
、a223,那么只要修改a22,他下面的的定额变动。
 

解决方案 »

  1.   

    递归嘛,给你个思路:
    function modifyQuantity(nodeId) {
        // 修改nodeId对应节点的数量和定额;
        modify();
        // 检查有无子节点
        var hasChildren = check();
        // 若无,则返回
        if (!hasChildren)
           return;
        // 若有子节点,取其直接子节点,递归调用修改数量的方法
        var childrenNodeIdArray = getChildren(nodeId);
        $.each(childrenNodeIdArray, function(k, val) {
            modifyQuantity(val);
        })
    };
      

  2.   

    <script type="text/javascript">
    var obj={a:{N:6,P:1},a1:{N:6,P:60},a2:{N:6,P:60},a21:{N:3,P:30},a22:{N:3,P:30},a3:{N:3,P:30}};
    function edit(v,i){
        var l= v.length;
        for(var k in obj){
            if(k.substring(0,l)==v){
                obj[k].P*=i;
            }
        }
    }
        edit("a1",2);
        console.log(obj);
    </script>
      

  3.   

    名称       数量           生产        定额 
    a          1            1         1
     a1        6            1         6
     a2        6            1         6
       a21     6            1         6
       a22     6            1         6
     a3        8            1         8通过f_id 关联,从数据表中取出数据,形成这样结构的表。当修改a的生产数量的时候,所有a下面的的名称中的定额值都发生改变,规则是 各自名称的数量值乘以生产值,得到的值赋给该名称的定额。
    如果a2的生产值变动,则a2下属的 a21 、a22 的定额值变动, 规则是 a21、a22 的数量乘以 a2的生产值。得到的乘积值赋予 a21、a22 的定额值。当然如果a22 下面还有a221,a222、a223 的话,也是同样的道理。