2016-07-17 8 views
0

私はPHPでフォームの値を保持するためにJavaScriptを使用しています。フォームの一部は動的に生成されるため、ユーザーがどのように子供を持っているか(保険の形態です)に基づいています。したがって、ユーザーの入力に基づいて、特定のPHP値が存在しない場合があります(ユーザーが子供を1人だけ選択した場合、$ childBirthyear2は存在しません)。明らかに、これはJavascriptに問題があります。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)を読み取り、$ childBirthyear3はありません:私はまだ同じエラーを取得し、私は具体的には、条件を実装する前でしたこのインスタンスには存在しません)。しかし、私はこのコードにも達しているのかどうかは確信していません。私が何を意味するかを理解するために、これは、コードがブラウザにどのように見えるかです:

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。

ありがとうございました!

+1

ここでは、配列とforループが役に立ちます。誰かが9人の子供を持っているとどうなりますか? :-)コードの残りの部分を見ることなく、多くのことを助けるのは難しいですが、私は迅速な修正は何に関係なくすべての変数の値を割り当てることだと思います。例えば。 '$ childBirthyear5 =" null ";'は、実際の子の数に基づいて実際の値を割り当てる場所のどこにでもあります。 – smarx

+1

* "問題のあるコードが実行されるとは思っていませんでした.2つは> 3ではありません。" * - ブラウザがJSを実行する前にまず構文解析を行うので、 JSのブロック全体をダンプするために単一の 'echo'を使うのではなく、' PHP'で 'if'テストを行い、必要な' cycleSelectOptions() 'ステートメントだけをエコーし​​ます。 (また、 '$ childBirthyear2'変数が' if' *と* '1900で何とか' 2> = 2'を出力しているので、PHPがブラウザにその出力をどのように出力するかはわかりません'次の行で)。 – nnnnnn

+0

すてきな答えとアドバイスをいただき、ありがとうございました。それは有り難いです。 – KellyMarchewa

答えて

1

JavaScriptの文字列で使用する前に、PHPでこれらの変数の値を設定する必要があると思います。たぶんのような単純なもの:

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

    ..."; 
} 

PHP変数が設定されていない場合は、JSに空白文字列を挿入すると言う...もちろん、あなたが好きなとその「デフォルト」値を置き換えることができます。

関連する問題