1 - 第一个脚本
缺少break语句的情况:
switch (this.getField("Floor Location").value) {
case "-":
event.value = "-";
break;
case "B":
(this.getField("Store").value) {
case "-":
event.value = "-";
break;
case "One Storey":
event.value = "11";
break;
case "Two Storeys":
event.value = "17";
break;
}
break; //ADDED
case 'M':
switch (this.getField("Storeys").value) {
case "-":
event.value = "-";
break;
case "One Storey":
event.value = "1";
break;
case "Two Storeys":
event.value = "11";
break;
}
break; //ADDED
case "2nd":
switch (this.getField("Storeys").value) {
case "-":
event.value = "-";
break;
case "One Storey":
event.value = "_";
break;
case "Two Storeys":
event.value = "1";
break;
}
break; //ADDED
default:
event.value = this.getField("Floor Location").value;
break;
2 - 第二个脚本
在第二个脚本中,使用条件判断时误用了赋值操作符“=”而非等于运算符“===”,这是主要的错误。您只需将“=”改为“===”即可解决该问题。不过,我已经为您修改了这个错误:
var floor = this.getField("Floor Location").value;
var storeys = this.getField("Storeys").value;
var zero, oneStorey, twoStoreys, none, B, M, Second;
if (storeys === "-") {
zero = storeys;
}
if (storeys === "One storey") {
oneStorey = storeys;
}
if (storeys === "Two Storeys") {
twoStoreys = storeys;
}
if (floor === "-") {
none = floor;
}
if (floor === "B") {
B = floor;
}
if (floor === "M") {
M = floor;
}
if (floor === "2nd") {
Second = floor;
}
switch (true) {
case ((zero === storeys) && (none === floor)):
event.value = "-";
break;
case ((zero === storeys) && (B === floor)):
event.value = "-";
break;
case ((zero === storeys) && (M === floor)):
event.value = "-";
break;
case ((zero === storeys) && (Second === floor)):
event.value = "-";
break;
case ((oneStorey === storeys) && (none === floor)):
event.value = "-";
break;
case ((oneStorey === storeys) && (B === floor)):
event.value = "11";
break;
case ((oneStorey === storeys) && (M === floor)):
event.value = "1";
break;
case ((oneStorey === storeys) && (Second === floor)):
event.value = "-";
break;
case ((twoStoreys === storeys) && (none === floor)):
event.value = "-";
break;
case ((twoStoreys === storeys) && (B === floor)):
event.value = "17";
case ((twoStoreys === storeys) && (M === floor)):
event.value = "11";
break;
case ((twoStoreys === storeys) && (Second === floor)):
// Please set the expected output for this case
event.value = "YOUR_EXPECTED_VALUE";
break;
}
其他建议:
1 - 将所有变量声明集中放在代码的顶部。
2 - 避免重复声明同一变量。
3 - 在进行比较时,使用“===”而非“==”,以防止意外的类型转换。
4 - 在switch语句中提供一个默认值。