2012-07-22 55 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