我正在Adobe LiveCycle上创建一个表单,用于在不同的字段中添加数字。我需要让最后一个字段(符合条件的资产)添加所有以前的字段但排除它们中的三个和一个特定的总和,但仅当它大于60000时。我已经为第一个写了如下脚本part(为所有字段求和)这是在一个名为TotalAssets的字段中:
this.rawValue =Cash.rawValue+SavingsAccount.rawValue+ChildrensSavings.rawValue+CheckingAccount.rawValue+ValueHome1.rawValue+ValueHome2.rawValue+ValueVehicle1.rawValue+ValueVehicle2.rawValue+ValueVehicle3.rawValue+BusinessAccount.rawValue+BusinessAssets.rawValue+StocksBonds.rawValue+Retirement.rawValue+CDs.rawValue+OtherInvestments.rawValue+OtherAssets.rawValue;
这项工作正常,但如果大于60000的退休值不应添加到计算中。这就是我所写的(EligibleAssets):
if (Retirement.rawValue > 60000) {
Retirement.rawValue = 0;
} else {
Retirement.rawValue == Retirement.rawValue ;
}
this.rawValue = TotalAssets.rawValue - (ValueHome1.rawValue+ValueVehicle1.rawValue +Retirement.rawValue);
当我将表单另存为PDF时,第一个字段总计正确计算,但第二个字段显示为空白。
如果您能发现我错过或做错的话,我会非常感谢任何反馈。谢谢!
答案 0 :(得分:0)
我在这里看到两个简单的问题。
第一个问题是,当您使用==
时,您正在使用=
。
==
- 检查左侧是否等于到右侧。示例:if(x == 5) {
=
- 设置左侧到右侧的值。示例:x = 5
在第一个示例中,我们单独留下x,但在第二个示例中,我们将 x更改为5。
所以你的代码应该是这样的:
} else {
Retirement.rawValue = Retirement.rawValue;
}
但是,当您考虑到这一点时,此代码实际上并没有做任何事情。 Retirement.rawValue
不会改变。
这导致我们在代码中出现第二个错误,至少,它看起来像是一个错误。
if(Retirement.rawValue > 60000) {
Retirement.rawValue = 0;
}
这实际上是更改 Retirement.rawValue
,这可能会更改表单中退休字段内的内容。更糟糕的是,当某些其他字段计算时,表单可能看起来相同,但行为可能不同,因为您已经更改了它rawValue
。这将是一个非常棘手的问题。
解决方案是创建一个新变量:http://www.w3schools.com/js/js_variables.asp
所以现在我们可以创建一个新变量,将该变量设置为退役金额或者不设置任何变量,然后将该变量添加到最后的其他rawValue
:
var retirementOrZero;
if(Retirement.rawValue > 60000) {
retirementOrZero = 0;
} else {
retirementOrZero = Retirement.rawValue;
}
this.rawValue = TotalAssets.rawValue - (ValueHome1.rawValue + ValueVehicle1.rawValue + retirementOrZero);
现在我们有一个号码,我们可以命名我们想要的任何东西,我们可以随心所欲地改变它,而不会影响我们自己的任何代码。因此,我们首先检查我们的退休值是否大于60000.如果它更大,我们将变量设置为0.否则,我们将变量设置为退休值。然后我们将我们制作的变量添加到住宅和价值成本中。
作为最后一个问题,是否应该这样做
if(Retirement.rawValue > 60000) {
retirementValueOrZero = 0;
}
或它应该做什么
if(Retirement.rawValue > 60000) {
retirementValueOrZero = 60000;
}
当然,如果你将它设置为60000而不是将其设置为零,你可能想要命名你的变量cappedRetirementValue
或类似的东西 - 只要确保你在任何地方重命名它!
希望这有帮助!
编辑:你说你只是在退休价值大于60k的情况下加入,所以你想要的是:
if(RetirementValue.rawValue > 60000) {
retirementValueOrZero = RetirementValue.rawValue;
} else {
retirementValueOrZero = 0;
}