2012-07-17 27 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

相關問題