【问题标题】:PDF autofill using javascript nested if statement error使用javascript嵌套if语句错误的PDF自动填充
【发布时间】:2021-05-19 20:11:37
【问题描述】:

我有一个带有两个输入文本框的 pdf。 1.) 项目代码和 2.) 项目

我正在尝试根据“项目代码”填充“项目”,但嵌套语句为我提供了以下所有情况下第一个 else if 条件的数据。例如,对于代码 5009113,我应该得到“20% 100 ML”,对于代码 5009111,我应该得到“25% 50ML”,依此类推。相反,对于项目代码中的任何和所有值,我都会得到“20% 100ML”。请帮我解决这个问题:)

var v = this.getField("Item Code").valueAsString; 
var RXC = Number(v); 
if (v=="") event.value = ""; 
else if (RXC=5009113) event.value = "20% 100ML"; 
else if (RXC=5009111) event.value = "25% 50ML";
else if (RXC=5009112) event.value = "25% 100ML";
else if (RXC=5009099) event.value = "5% 250ML";
else if (RXC=5009110) event.value = "5% 500ML";

【问题讨论】:

  • 您可以考虑使用 switch 语句而不是所有那些 if 语句。

标签: javascript acrobat nested-if conditional-execution


【解决方案1】:

else if 语句中的条件包含如下表达式:

RXC=5009113

这是一个赋值表达式:您将值 5009113 赋值给变量 RXC。这被认为是“真实”语句,因此它的计算结果为 true,因此不再考虑 else if 语句。

您应该使用比较运算符=== 而不是这个。还可以查看this question,了解===== 之间的区别 - 以及为什么在这里使用=== 更好。

我个人更喜欢使用空格字符来分隔表达式的各个部分:

else if (RXC === 5009113)

它让(对我来说)更容易看到发生了什么 - 并且更容易发现我可能使用 = 而不是 === 的地方。

但我建议重新编写整个代码部分以使用带有大括号的“if/else”,如下所示:

if (v === "") {
  event.value = "";
} else if (RXC === 5009113) {
  event.value = "20% 100ML"; 
} else if (RXC === 5009111) { 
  event.value = "25% 50ML";
} ...

如 cmets 中所述,使用switch statement 可能更好。这将比几个 if/else 语句更简洁:更易于阅读、调试和维护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多