我点击它时当前有一个按钮,它应该会打开一个新窗口,但我收到此错误:Uncaught SyntaxError: Unexpected token :
。我正在使用window.open()
$url = "http://www.google.com";
$button .=
'<input type="button" value="Print Timetable" class="printButton" onclick="window.open('.$url.');"/>';
我注意到当我使用没有参数的window.open()时它会起作用但是当我传入$url
变量时,所有地狱都会松动。我得到语法错误。我已尝试http://www.google.com,www.google.com和google.com无效!
提前感谢您的帮助!
答案 0 :(得分:5)
因为您缺少封装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
?>
答案 1 :(得分:1)
这里有一些问题:
你在等于之前有一个句号,例如
$button .=
应该是
$button =
你需要逃避单引号:
$url = "http://www.google.com";
$button = '<input type="button" value="Print Timetable" class="printButton" onclick="window.open(''.$url.'');"/>';
答案 2 :(得分:0)
我认为它应该是这样的:
$url = "http://www.google.com";
$button .=
'<input type="button" value="Print Timetable" class="printButton" onclick="window.open("'.$url.'");"/>';
window.open()需要引用或双引号