0

我有一个带有两个输入文本框的 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";
4

1 回答 1

0

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

RXC=5009113

这是一个赋值表达式:您将值5009113赋给变量RXC。这被认为是一个“真实”的陈述,因此它评估为true,因此不再else if考虑更多的陈述。

取而代之的是,您应该使用比较运算符===。还要看看这个==关于和之间的区别的问题===- 以及为什么===在这里使用更好。

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

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";
} ...

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

于 2021-05-20T15:42:13.633 回答