Javascript 使用HTML onClick将PHP变量作为参数传递

Javascript 使用HTML onClick将PHP变量作为参数传递,javascript,php,html,onclick,Javascript,Php,Html,Onclick,我看了很多类似的例子,但我无法做到这一点 所以,我有这个: echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;"> <button class="btnTrack" onClick="trackIt(' . $name . ')" >Track It!</button></td>'); echo(' 跟踪它

我看了很多类似的例子,但我无法做到这一点

所以,我有这个:

echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
      <button class="btnTrack" onClick="trackIt(' . $name . ')" >Track It!</button></td>');
echo('
跟踪它!);
该代码位于for中,因此变量$name将根据我所在的位置而有所不同

我不想让事情复杂化,所以首先,我只是想把这个参数传递给函数trackIt(实际上我需要传递其中的两个)

然后,我有一个简单的脚本(只是想看看它是否能工作):


//在你点击跟踪它之后
函数trackIt(参数)
{
警惕(“嗨!”);
警报(参数);
}
但是,它不起作用

如果我的
onClick
函数只是
onClick=“trackIt()”
,那么它工作正常,我可以通过删除参数来警告“Hi!”

谢谢你的帮助!=]

试试这个

echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
  <button class="btnTrack" onclick="trackIt(\'' . $name . '\')" >Track It!</button></td>');
echo('
跟踪它!);
注意:如果输入参数是数值,则必须使用自己的方式


您正在将HTML打印为

<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
<button class="btnTrack" onclick="trackIt(test)" >Track It!</button></td>

追踪它!
但是因为函数trackIt需要一个字符串作为输入参数,所以您必须打印它

<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
<button class="btnTrack" onclick="trackIt('test')" >Track It!</button></td>

追踪它!
当您使用
'
作为PHP中定义字符串的边界时,您必须使用
\'
对其进行转义,以使
'
字符成为字符串的一部分。

试试这个

echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
  <button class="btnTrack" onclick="trackIt(\'' . $name . '\')" >Track It!</button></td>');
echo('
跟踪它!);
注意:如果输入参数是数值,则必须使用自己的方式


您正在将HTML打印为

<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
<button class="btnTrack" onclick="trackIt(test)" >Track It!</button></td>

追踪它!
但是因为函数trackIt需要一个字符串作为输入参数,所以您必须打印它

<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
<button class="btnTrack" onclick="trackIt('test')" >Track It!</button></td>

追踪它!

当您使用
'
作为PHP中定义字符串的边界时,您必须使用
\'
对其进行转义,以使
'
字符成为字符串的一部分。

这不起作用的原因是,您在HTML中将未封装的字符串作为参数传递,它被解释为一个javascript变量,例如:

Uncaught ReferenceError: ValueOf$name is not defined
" 或者,如果变量包含空格或特殊字符:

 Uncaught SyntaxError: Unexpected identifier
要解决这个问题,您应该用引号封装字符串

"trackIt(\'' . $name . '\')"
如果您使用的是整数,则不需要字符串封装


这不起作用的原因是,您在HTML中将未封装的字符串作为参数传递,但它被解释为javascript变量,例如:

Uncaught ReferenceError: ValueOf$name is not defined
" 或者,如果变量包含空格或特殊字符:

 Uncaught SyntaxError: Unexpected identifier
要解决这个问题,您应该用引号封装字符串

"trackIt(\'' . $name . '\')"
如果您使用的是整数,则不需要字符串封装


即使其他答案是正确的。。。如果您不需要真正打印所有html,请使用不同的php

echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
      <button class="btnTrack" onClick="trackIt(' . $name . ')" >Track It!</button></td>');
echo('
跟踪它!);
它可以成为:

<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
          <button class="btnTrack" onClick="trackIt(<?php print $name;?>)" >Track It!</button></td>


即使其他答案是正确的。。。如果您不需要真正打印所有html,请使用不同的php

echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
      <button class="btnTrack" onClick="trackIt(' . $name . ')" >Track It!</button></td>');
echo('
跟踪它!);
它可以成为:

<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
          <button class="btnTrack" onClick="trackIt(<?php print $name;?>)" >Track It!</button></td>


对于传递多个参数,您可以通过将字符串与ASCII值串联来强制转换字符串,例如,对于单引号,我们可以使用
'


这对我很有用。

对于传递多个参数,您可以通过将字符串与ASCII值串联来强制转换字符串,例如,对于单引号,我们可以使用
'


这对我很有用。

查看生成的html以了解更多的clues您忘记在插入的变量周围加引号了。e、 g.您正在执行
foo(bar)
,将bar设置为未定义的变量,而不是
foo('bar')
,将bar设置为字符串。查看生成的html以了解更多提示您忘记在插入的变量周围加引号。e、 g.您正在执行
foo(bar)
,将bar设置为未定义变量,而不是
foo('bar')
,将bar设置为字符串。不过,感谢您的解释,
“trackIt(\”.$name.\”)
不起作用<代码>“trackIt(\”.$name.“\””
不起作用,因为无法在用双引号封装的属性中转义双引号。不过,感谢您的解释,
“trackIt(\”.$name.“\”)”
不起作用<代码>“trackIt(\”.$name.\”)“
不起作用,因为无法在用双引号封装的属性中转义双引号。这并不能解决问题-生成的HTML仍将被破坏。这不能解决问题-生成的HTML仍将被破坏。现在,我需要使用
onclick=“trackIt(\'.$name.'\')”
传递第二个参数,我应该为这个问题创建一个不同的帖子吗?@Felipe,看看你是否可以先找出如何传递另一个参数。我尝试了一些不同的方法,但没有成功。然后,我再次阅读了所有的评论,以更好地理解它是如何工作的,多亏@plbsam的新解释,我才得以实现。谢谢大家!=]伟大的你最好不要不假思索地问问题。。否则,当stackoverflow死亡时,您将无法生存:)现在,我需要使用
onclick=“trackIt(\'.$name.'\')”
传递第二个参数,我应该为这个问题创建一个不同的帖子吗?@Felipe,看看你是否可以先找到如何传递另一个参数的方法。我尝试了一些不同的方法,但没有成功。然后,我再次阅读了所有的评论,以更好地理解它是如何工作的,多亏@plbsam的新解释,我才得以实现。谢谢大家!=]伟大的你最好不要不假思索地问问题。。否则,当stackoverflow死亡时,您将无法生存:)