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

如果你传递$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 回答