名称 数量 定额
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,他下面的的定额变动。
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,他下面的的定额变动。
function modifyQuantity(nodeId) {
// 修改nodeId对应节点的数量和定额;
modify();
// 检查有无子节点
var hasChildren = check();
// 若无,则返回
if (!hasChildren)
return;
// 若有子节点,取其直接子节点,递归调用修改数量的方法
var childrenNodeIdArray = getChildren(nodeId);
$.each(childrenNodeIdArray, function(k, val) {
modifyQuantity(val);
})
};
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>
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 的话,也是同样的道理。