0

重複の可能性:
php変数値をjavascriptに渡す

私はPHPコードを持っています

function formLetterTabPage($redirect_url, $letter){
  $test = 123;
  foreach (range('A','Z') as $val) {
    if($val == $letter){
        echo '<li class="a" id="li_'.$letter.'" onclick="tab_click('.$letter.')">'.$letter.'</li>';
    }else{
        echo '<li class="b" id="li_'.$val.'" onclick="tab_click('.$letter.')">'.$val.'</li>';
    }
  }
}

私のJavaScript関数tab_clickは非常に単純です:

function tab_click(f){
  alert(f);
}

重要な部分は次のとおりです。

echo '<li class="a" onclick="tab_click('.$letter.')">'.$letter.'</li>';

うまくいきません!だから私はそれを次のように変更します:

$test = 123;
echo '<li class="a" onclick="tab_click('.$test .')">'.$letter.'</li>';

それはうまく機能し、ページには123が表示されます! なぜこれが起こるのだろうか?そして、htmlコードをチェックしましたが、大丈夫です:

<li class="navi_letter_leftb" id="li_A" onclick="tab_click(A)">A</li>

わかりました、なぜかわからないのですか?

4

2 に答える 2

4

文字列パラメーターの JavaScript に追加の引用符が必要です。

echo '<li class="a" onclick="tab_click(\''.$letter.'\')">'.$letter.'</li>';

テストケース$test = 123;では整数を渡しているため、引用符は必要ありません。

編集

引用符なしの出力 (無効な JavaScript):

<li class="a" onclick="tab_click(a)">a</li>

引用符付きの出力:

<li class="a" onclick="tab_click('a')">a</li>
于 2012-10-10T15:12:55.350 に答える
1

JavaScriptを渡す$test = 123と、整数値を渡すため、JavaScriptが機能します。

しかし、$letterそれは文字列であるため、結果のhtmlコードは間違っています。

<li class="navi_letter_leftb" id="li_A" onclick="tab_click(A)">A</li>

文字列を引用符で囲む必要があります''。したがって、次のようになります。

<li class="navi_letter_leftb" id="li_A" onclick="tab_click('A')">A</li>

コードを次のように変更する必要があります。

echo '<li class="a" onclick="tab_click(\''.$letter.'\')">'.$letter.'</li>';
于 2012-10-10T15:17:24.783 に答える