0

我有的:

尝试以这种方式将变量传递给 javascript 方法:

$name = (string) $form->attributes()->name;
$show = 'show("'.$name.'")';
echo '<input type="radio" onclick="'.$show.'">'.$form['description'].'<br />';
print_r($show); // show("feedback")
...
<script>
function show(name) {
    //DEBUG HERE!
    ...
}
</script>

有什么问题:

在浏览器的调试器中,我可以看到在show方法中我已经传递了整个表单(意味着参数名称等于整个表单)。

问题:

为什么会这样?如何仅传递给 js-method 表单的名称?

4

2 回答 2

2

我认为您只是缺少一些引号:

echo '... onclick="show(\"'.$name.'\")> ...';

注意\"我放的$name。在您的代码中,如果$name = "Foo",它将编写show(Foo)而不是show("Foo").

于 2013-11-02T18:35:08.570 回答
0

我认为您没有正确转义字符串以供 JS 函数使用。尝试像这样转义字符串:

$name = 'feedback';
$description = 'description';

//like this
echo '<input type="radio" onclick="show('. "'" . $name . "'" . ')">' . $description . '<br/>';

// or like this
echo "<input type=\"radio\" onclick=\"show(' . $name  . ')\">" . $description . "<br/>";

<script>
function show(name) {
  alert(name);
}
</script>

我希望这有帮助。

于 2013-11-02T19:27:45.227 回答