如何检索总数 "else if"
How to retrieve total of "else if"
我如何计算这些总和?如果我添加类似:
else if (cb1){ event.value[+=][1]this.getField("Totaldays").value*0;
}
它只是扩展了答案,并没有给我总和。例如:
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
使用 +=
运算符而不是 +
将一个数字添加到 运行 总数中。
//...
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;
});
这可以简化很多。了解复选框的 return 值在 Acrobat 中的工作方式 JavaScript 是关键。
复选框选中时,return为指定值,未选中时,return为"Off"。因此,您可以将框的 return 值设置为您的租金。此外,假设所有物品的租赁期限相同,整个事情简化为:
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
仅此而已。
我如何计算这些总和?如果我添加类似:
else if (cb1){ event.value[+=][1]this.getField("Totaldays").value*0;
}
它只是扩展了答案,并没有给我总和。例如:
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
使用 +=
运算符而不是 +
将一个数字添加到 运行 总数中。
//...
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;
});
这可以简化很多。了解复选框的 return 值在 Acrobat 中的工作方式 JavaScript 是关键。
复选框选中时,return为指定值,未选中时,return为"Off"。因此,您可以将框的 return 值设置为您的租金。此外,假设所有物品的租赁期限相同,整个事情简化为:
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
仅此而已。