问题描述
我有一个带有两个输入文本框的 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";
解决方法
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";
} ...
也许更好的是使用 switch statement,如评论中所述。这将比几个 if/else 语句更简洁:更易于阅读、调试和维护。