因为您缺少封装 url 字符串所需的单引号。
$url = "http://www.google.com";
$button .=
'<input type="button" value="Print Timetable" class="printButton" onclick="window.open(\''.$url.'\');"/>';
您正在添加一层字符串封装。当您将字符串值传递给函数时,它必须用引号引起来,因为它是一个字符串。
doSomething('http://www.ibm.com/');
当您在 html 中内联执行此操作时,您需要将 javascript 封装在双引号中,使其变为
onclick="doSomething('http://www.ibm.com/');";
然后,如果您希望 PHP 回显它,或者将其分配为变量,您需要将所有这些括在引号中,这样您就可以
<?php
//encapsulate in double quotes and escape double quotes
echo " onclick=\"doSomething('http://www.ibm.com/');\" ";
//encapsulate in single quotes and escape single quotes
echo ' onclick="doSomething(\'http://www.ibm.com/\'); ';
?>
任何分解它的方式都需要相互嵌入 3 个字符串封装,因此您必须找到一种方法来区分 JS 中使用的引号和 PHP 中使用的引号。
否则你会有问题。
<?php
//Houston We have a problem!
echo " onclick="doSomething('http://www.ibm.com/');\" ";
^ ^ ^ ^
Open Quote Close Quote Open Quote Close Quote
?>