2012-07-22 46 views
0

我有一個JavaScript超鏈接,它沒有將變量傳遞給函數,無疑是由於語法。有人可以發現錯誤。將變量傳遞給函數的javascript語法

的jsfiddle:http://jsfiddle.net/kSVVX/

JS

function follow(id){ 
    alert(id); 
} 

HTML

<a href='javascript:void(0);' onclick= 'follow('1');'><img src='images/test.gif' border=0 alt='follow'></a> 

注:我使用的所有單引號的原因是,這個環節實際上是充分利用PHP,其中一個長的迴響字符串用引號括起來(因爲字符串中的某些東西必須在撇號中。)我有一種感覺,這是問題的根源,但沒有成功我ñ通過改變周圍的標點符號來解決它。

感謝您的任何建議。

+0

*的javascript語法在PHP *?如何與PHP相關? – 2012-07-22 16:02:57

+0

標題編輯。我的意思是它使用引號在PHP中回顯,但是,你是正確的,這不是關於PHP。 – user1260310 2012-07-22 16:14:40

回答

5

您正在使用'引號包含你的JavaScript字符串它嵌入在HTML屬性值

這導致:

onclick= 'follow(' 

或者:

  • 避免內在事件屬性(建議您應該這樣做,unobtrusive JavaScript)。
  • 使用不同的字符分隔的屬性值(onclick="follow('1');"或串onclick= 'follow("1");'
  • 使用HTML實體包括您所使用的數據屬性值的引號(onclick= 'follow(&#39;1&#39;);'
+0

這是所有在用引號分隔的php echo語句中,所以如果我使用引號,我會干擾該語句。我猜html的方法將工作......我不認爲有一種方法來以某種方式逃避撇號或使用backicks? – user1260310 2012-07-22 16:11:45

+0

@ user1260310 - PHP具有用於轉義字符串中的引號字符的語法......但在彼此中嵌套語言是一種變得難看難以維護代碼的好方法。由於某種原因,解決方案列表中的首選選項位於頂部。不要使用內部事件屬性。請使用外部JavaScript。不要將HTML放入PHP字符串中。退出PHP模式('?>')或使用模板語言輸出HTML。 – Quentin 2012-07-22 16:13:46

+0

我把jsfiddle改成了引號,但似乎還是有些不對勁:http://jsfiddle.net/kSVVX/2/ – user1260310 2012-07-22 16:18:08