Javascript-以False条件运行代码

Javascript - Running Code in False Conditional

本文关键字:运行 代码 条件 False Javascript-      更新时间:2023-09-26

我在PHP中使用JavaScript来保留表单值。表单的一部分是动态生成的,因此基于用户的子女情况(这是一个保险表单)。因此,有时根据用户的输入,某些PHP值根本不存在(如果用户只选择了一个孩子,则$childBirthyar2将不存在)。显然,这给Javascript带来了一个问题。

我想我可以用一个条件语句来解决它。事实并非如此。我仍然得到相同的错误,我是在实现条件之前,特别是:

Timestamp: 7/16/2016 6:53:15 PM
Error: SyntaxError: expected expression, got ')'
Source File: https://insurancemidam.com/test/confirmation.php
Line: 665, Column: 41
Source Code:
  cycleSelectOptions('#childBirthyear3', ); 

现在我明白了它为什么会出现错误(在浏览器中运行之前,代码读取cycleSelectOptions('#childBirthyear3', $childBirthyear3 ),而$childBirthyar3在这个实例中不存在);然而,我甚至不太确定为什么会达到这个代码。为了理解我的意思,这就是代码在浏览器中的样子:

cycleSelectOptions('#childBirthyear1', 1900);
cycleSelectOptions('#childBirthday1', 01);
cycleSelectOptions('#childBirthmonth1', 11);

if(2 >= 2) {
  cycleSelectOptions('#childBirthyear2', 1900);
cycleSelectOptions('#childBirthday2', 01);
cycleSelectOptions('#childBirthmonth2', 01);
}
if(2 >= 3) {
  cycleSelectOptions('#childBirthyear3', );
cycleSelectOptions('#childBirthday3', );
cycleSelectOptions('#childBirthmonth3', );
}
 if(2 >= 4) { cycleSelectOptions('#childBirthyear4', );
cycleSelectOptions('#childBirthday4', );
cycleSelectOptions('#childBirthmonth4', );
}
 if(2 >= 5) { cycleSelectOptions('#childBirthyear5', );
cycleSelectOptions('#childBirthday5', );
cycleSelectOptions('#childBirthmonth5', );
}
 if(2 >= 6) { cycleSelectOptions('#childBirthyear6', );
cycleSelectOptions('#childBirthday6', );
cycleSelectOptions('#childBirthmonth6', );
}
 if(2 >= 7) { cycleSelectOptions('#childBirthyear7', );
cycleSelectOptions('#childBirthday7', );
cycleSelectOptions('#childBirthmonth7', );
}
 if(2 >= 8) { cycleSelectOptions('#childBirthyear8', );
cycleSelectOptions('#childBirthday8', );
cycleSelectOptions('#childBirthmonth8', ); 

这是原始的PHP

if($hasChildren) {
echo" 
if($childBirthyear1) {
  cycleSelectOptions('#childBirthyear1', $childBirthyear1);
cycleSelectOptions('#childBirthday1', $childBirthday1);
cycleSelectOptions('#childBirthmonth1', $childBirtmonth1);
}
if($childBirthyear2) {
  cycleSelectOptions('#childBirthyear2', $childBirthyear2);
cycleSelectOptions('#childBirthday2', $childBirthday2);
cycleSelectOptions('#childBirthmonth2', $childBirtmonth2);
}
if($childBirthyear3) {
  cycleSelectOptions('#childBirthyear3', $childBirthyear3);
cycleSelectOptions('#childBirthday3', $childBirthday3);
cycleSelectOptions('#childBirthmonth3', $childBirtmonth3);
}
 if($childBirthyear4) { cycleSelectOptions('#childBirthyear4', $childBirthyear4);
cycleSelectOptions('#childBirthday4', $childBirthday4);
cycleSelectOptions('#childBirthmonth4', $childBirtmonth4);
}
 if($childbirthyear5) { cycleSelectOptions('#childBirthyear5', $childBirthyear5);
cycleSelectOptions('#childBirthday5', $childBirthday5);
cycleSelectOptions('#childBirthmonth5', $childBirtmonth5);
}
 if($childBirthyear6) { cycleSelectOptions('#childBirthyear6', $childBirthyear6);
cycleSelectOptions('#childBirthday6', $childBirthday6);
cycleSelectOptions('#childBirthmonth6', $childBirtmonth6);
}
 if($childBirthyear7) { cycleSelectOptions('#childBirthyear7', $childBirthyear7);
cycleSelectOptions('#childBirthday7', $childBirthday7);
cycleSelectOptions('#childBirthmonth7', $childBirtmonth7);
}
 if($childBirthYear8) { cycleSelectOptions('#childBirthyear8', $childBirthyear8);
cycleSelectOptions('#childBirthday8', $childBirthday8);
cycleSelectOptions('#childBirthmonth8', $childBirtmonth8);";
}

我不认为有问题的代码会被执行——毕竟,2不是>=3。

谢谢你的帮助!

在JavaScript字符串中使用这些变量之前,我认为您需要在PHP中为它们设置一些值。也许是一些简单的东西,比如:

if($hasChildren) {
    echo "
    ...
    cycleSelectOptions('#childBirthyear3', " . ((isset($childBirthyear3))?$childBirthyear3:"''") . ");
    ...";
}

也就是说,如果没有设置PHP变量,那么在JS中插入一个空白字符串。。。当然,您可以将"默认"值替换为您喜欢的任何值。