如何检索“ else if”的总数

时间:2018-12-10 17:32:19

标签: javascript acrobat

我将如何总计这些?如果我添加类似的内容:

else if (cb1){ event.value[+=][1]this.getField("Totaldays").value*0;
}

它只是扩展了答案,而没有给我总和。例如:

enter image description here

else if (cb1){ event.value=this.getField("Totaldays").value*0;
}
else if (cb2){ event.value=this.getField("Totaldays").value*30; 
}
else if (cb3){ event.value=this.getField("Totaldays").value*20;
}
else if (cb4){ event.value=this.getField("Totaldays").value*0;
}
else if (cb5){ event.value=this.getField("Totaldays").value*40;
}
else if (cb6){ event.value=this.getField("Totaldays").value*0;
}
else if (c7){ event.value=this.getField("Totaldays").value*0;
}

以上是我当前的代码,该代码不求和,只是用新选中的框号替换了以前的数字。 enter image description here

2 个答案:

答案 0 :(得分:1)

使用+=运算符代替+将数字添加到运行总计中。

//...
else if (cb1){ event.value += this.getField("Totaldays").value*0; }
else if (cb2){ event.value += this.getField("Totaldays").value*30; }
else if (cb3){ event.value += this.getField("Totaldays").value*20; }
else if (cb4){ event.value += this.getField("Totaldays").value*0; }
else if (cb5){ event.value += this.getField("Totaldays").value*40; }
else if (cb6){ event.value += this.getField("Totaldays").value*0; }
else if (cb7){ event.value += this.getField("Totaldays").value*0; }

也就是说,可能有更好的方法来做您想做的事情。如果您提供更多背景信息,我可以为您优化答案。

考虑此代码更简洁的代码块,其结果与上面的代码相同,但可以自行记录逻辑和数据。

let totalDays = this.getField("Totaldays").value;
[
    {checked: cb1, rentalRate:  0},
    {checked: cb2, rentalRate: 30},
    {checked: cb3, rentalRate: 20},
    {checked: cb4, rentalRate:  0},
    {checked: cb5, rentalRate: 40},
    {checked: cb6, rentalRate:  0},
    {checked: cb7, rentalRate:  0}
]
.filter(item => item.checked)
.forEach(item => {
    let rentalFee = item.rentalRate * totalDays;
    event.value += rentalFee;
});

答案 1 :(得分:0)

这可以简化很多。了解Acrobat JavaScript中复选框的返回值的工作方式是关键。

选中该框后,它将返回指定的值,而未选中该框时,它将返回“关”。因此,您可以将盒子的返回值设置为您的租金。另外,假设所有项目的租期都相同,则整个过程简化为:

var rentaldays = xx // xx is the number of days, not part of this snippet
var rsum = 0 ;
for (var i = 0 ; i < 8 ; i++) {
rsum += this.getField("cb" + i).value.toString.replace(/Off/gim , 0)*1 ;
}
var rentalfee = rentaldays * rsum ; // to be written into a field

就是这样。