2

我正在尝试在 php 中传递带有 onclick 事件的 JavaScript 函数。我面临的问题是我需要传递的函数有一个需要用双引号括起来的参数,如下所示:

onclick="removeElement("div8")"

现在,当我使用 JavaScript 生成参数时,结果很好,但是每当我在 php 中使用 echo 函数时,当我在浏览器中查看该函数时会发生以下情况

onclick="removeElement(" div8")"

我用来生成它的代码是:

echo '<div><img src="img.png" alt="image" onclick="removeElement("div'.$x.'")" /></div>';

其中 $x 是要添加到参数的数字。

有没有办法将函数作为一个整体返回,而不是在两者之间留出空间?

4

7 回答 7

9

发生这种情况是因为引号内有引号。这将不起作用,并且会破坏 HTML 解析器。它将 onclick 视为removeElement(,然后它看到一个名为 的属性div8")"

试试这个:

echo '.....onclick="removeElement(&quot;div'.$x.'&quot;)"...';

HTML 实体在属性内部进行解析,因此结果将是您的工作代码。

于 2012-04-09T20:21:14.857 回答
2

将您的回声更改为:

echo '<div><img src="img.png" alt="image" onclick="removeElement(\'div'.$x.'\')" /></div>';
于 2012-04-09T20:20:43.393 回答
2

您必须在 javascript 中转义引号。代替

onclick="removeElement("div8")"

你应该写

onclick="removeElement(&quot;div8&quot;)"
于 2012-04-09T20:23:08.200 回答
1

尝试转义你的单引号

echo '<div><img src="img.png" alt="image" onclick="removeElement(\'div'.$x.'\')" /></div>';
于 2012-04-09T20:21:25.823 回答
1

只要您不在属性值中使用任何空格,您就可以省略 html 属性值周围的引号。所有浏览器都会处理得很好。所以你可以写:

onclick=removeElement("div8")

您也可以使用单引号:

onclick="removeElement('div8')" or 
onclick='removeElement("div8")'

或者您可以转义双引号:

echo '<div><img src="img.png" alt="image" onclick="removeElement(\"div'.$x.'\")" /></div>';
于 2012-04-09T20:22:00.973 回答
0

但更简单的解决方案是直接用 html 编写:

?>
<div>
 <img src='img.png' alt='image' onclick='removeElement("div<?php echo $x; ?>")' />
</div>
于 2012-04-09T20:37:14.297 回答
0

当你使用 php echo 试试这段代码

<a href="javascript:add_cota(<?php echo $value->ID .','.$k.', \''.$st.'\'';?>)">

$st 是避免 ReferenceError: Active is not defined 错误的字符串参数

于 2017-06-04T02:57:29.183 回答