使用javascript嵌套if语句错误的PDF自动填充

问题描述

我有一个带有两个输入文本框的 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 语句更简洁:更易于阅读、调试和维护。