为什么我的PHP生成的JavaScript不起作用?

时间:2011-02-13 19:30:29

标签: php javascript

我有以下javascript代码

echo ' <a href = "javascript:void(0)" onclick = "document.getElementById("items").style.display="block";document.getElementById("fade").style.display="block""><span style="padding-left:0px"><input type="submit" name="r" style="width: 138px; font-weight:bold;  " value="Add item"/></span></a>
';

我正在尝试从php脚本中执行脚本。当我点击按钮执行它的java部分时,没有任何反应。然后我就这样试试

echo ' <a href = "javascript:void(0)" onclick = "document.getElementById('items').style.display='block';document.getElementById('fade').style.display='block'"><span style="padding-left:0px"><input type="submit" name="r" style="width: 138px; font-weight:bold;  " value="Add item"/></span></a>
';

并得到此解析错误:解析错误,期待'," or';“。

3 个答案:

答案 0 :(得分:2)

你必须在php中的字符串中转义撇号。而不是

echo '(...) style.display='block' (...)';

DO

echo '(...) style.display=\'block\' (...)';

话虽如此,尝试将代码分成多行,这样至少有些可读。你也可以在php中写这样的HTML:

<?php
// php code
echo 'php';
?>
<HTML code>
<?php
// more php code

答案 1 :(得分:1)

echo ' <a href = "javascript:void(0)" onclick = "document.getElementById('items').style.display='block';document.getElementById('fade').style.display='block'"><span style="padding-left:0px"><input type="submit" name="r" style="width: 138px; font-weight:bold;  " value="Add item"/></span></a>
';

这不起作用,因为JS echo中的单引号params打破了PHP流程。尝试在回显中的每个单引号之前添加中断字符,不确定它在PHP中是什么,但尝试\'

IE:

Id('items')

变为

Id(\'items\')

答案 2 :(得分:1)

这与PHP无关。

您正在使用"引号来界定JavaScript字符串内部使用"个字符分隔的HTML属性值。

结果,JS中的第一个"终止了HTML属性值。

快速破解是在属性​​值中使用&quot;而不是"

更好的解决方案是使用unobtrusive JavaScript