2012-07-17 26 views
0

我试图将服务器端的值传递给a标记的onclick处理程序,但是当我单击链接时,它在客户端上给出了不同的结果。从PHP传递字符串到onclick锚点标记的处理程序

我的PHP代码:

$any="link1"; 
echo(" <a id='link1' href='#' onclick='VisibleFalse($any)'>[+]</a><span><b>$candidatename</b></span>"); 

我想串"link1"传递给函数VisibleFalse,这是显示字符串作为警示:

function VisibleFalse(ID) 
{ 
    alert(ID); 
} 

但它在打印"http://localhost/..."警报。

我将不胜感激您的任何建议。

回答

3

问题是,您传递的是字符串,而您忘记了给它添加引号使得最终结果将是该JavaScript函数中的一个字符串。这里有一个更好的方式来看看这个:

$any="link1"; 
// First, echo isn't a function. It can be faked to be used as one, but that's not recommended 
// Second, sort out your quoting like this: 
echo '<a id="link1" href="#" onclick="VisibleFalse(\''.$any.'\')">[+]</a><span><b>'.$candidatename.'</b></span>'; 

// OR 
echo "<a id='link1' href='#' onclick='VisibleFalse(\"$any\")'>[+]</a><span><b>$candidatename</b></span>"; 
0

必须引用JavaScript中的字符串文字。

onclick='VisibleFalse(&quot;$any&quot;)'> 

(但被认为是更痛苦的内在事件属性,然后他们的价值,因为是嵌入在嵌入PHP HTML的JavaScript。使用unobtrusive JavaScript代替。)

你还需要确保$any做不包括任何会终止字符串文字的引号字符(并且您应该使其与HTML代码保持一致,因此它不会终止属性值)

0

使用HTML的Unicode(其它字符可以发现here),相当于报价&#39;

echo(" <a id='link1' href='#' onclick='javascript:VisibleFalse(&#39;$any&#39;)'>[+]</a><span><b>$candidatename</b></span>"); 
+0

你为什么加了[标签](https://developer.mozilla.org/en/JavaScript/Reference/Statements/label)到一段JavaScript代码?没有循环。 – Quentin 2012-07-17 08:17:58

+0

只是一个习惯(lol),但是上面提示变量'$ any'的值。问候 – Killrawr 2012-07-17 08:19:02

+1

HTML中的字符引用是Unicode而不是ASCII(39在两个字符集中恰好是''',但由于重叠,它只是ASCII)。 – Quentin 2012-07-17 08:21:37

相关问题