0

我目前有一个按钮,单击它应该会打开一个新窗口,但我收到此错误: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 无济于事!

提前感谢您的帮助!

4

3 回答 3

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 
 ?>  
于 2012-05-03T12:58:03.817 回答
1

这里有几件事是错误的:

您在等号之前有一个句点字符,例如

$button .= 

应该

$button =

你需要转义你的单引号:

$url = "http://www.google.com";
$button = '<input type="button" value="Print Timetable" class="printButton" onclick="window.open(''.$url.'');"/>';
于 2012-05-03T13:00:35.217 回答
0

我认为它应该是这样的:

$url = "http://www.google.com";
$button .= 
'<input type="button" value="Print Timetable" class="printButton" onclick="window.open("'.$url.'");"/>';

window.open() 需要引号或双引号

于 2012-05-03T12:59:51.913 回答