如果Javascript中的Else语句为LiveCycle

时间:2014-07-14 20:41:19

标签: javascript if-statement livecycle-designer

我正在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时,第一个字段总计正确计算,但第二个字段显示为空白。

如果您能发现我错过或做错的话,我会非常感谢任何反馈。谢谢!

1 个答案:

答案 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;
}