2011-10-23 116 views
0

我有这样的代码(jQuery的):的Javascript:无法传递变量作为参数用的onClick

function somefunction() { 

     $.ajax({ 
     type : 'POST', 
     url : 'post.php', 
     dataType : 'json', 

     success : function(data){ 

      var mess = ""; 
      var count = 0; 

      while (count < (data.length - 1)) 
      { 

       mess = mess + "<a href=# onclick=deletePerson("JohnDoe");return false;><img src=x.gif></a>" + data[count].name + "<br />"; 
       count++; 
      } 


      $('#mydiv').html(mess).fadeIn('fast'); 


     }, 
    }); 


} 
function deletePerson(arg) {...} 

当我运行它,一切正常。 然而,当我想传递(而不是“JOHNDOE”)一个变量的onclick,它停止工作:

var myvar = "JohnDoe"; 
mess = mess + "<a href=# onclick=delete(myvar);return false;><img src=x.gif></a>" + data[count].name + "<br />"; 

我的编辑告诉我:“未解决的变量或类型”。

从来没有与传递参数的问题,但与此的onClick-东西,它只是不工作...

任何人都知道我做错了什么?

非常感谢!

编辑:瑟的后固定JOHNDOE问题,但是,当我把(谢谢!):

var myvar = data[count].name; 

它停止工作......有什么想法?

+0

你能告诉一下数据变量是怎么回事吗? – Dev

+0

像这样创建HTML和绑定事件处理程序很容易出错,因此风格很糟糕。考虑使用jQuery来做到这一点。 –

+0

这是绑定事件的一种非常糟糕的方式。如果你正在使用jQuery,你应该*使用*它:'$('').click(...)...' – zzzzBov

回答

1

您需要连接的变量

myvar = "JohnDoe"; 
mess = mess + "<a href=# onclick=delete('"+myvar+"');return false;><img src=x.gif></a>" + data[count].name + "<br />"; 
+2

你缺少引号周围的引号。 –

+0

也可能采取“var myvar”的变种,使其成为全球性的,不知道他/她在哪里宣布它。 – Mike

+0

@FelixKling哈!接得好!我错过了那一个。 :P固定 –

0

delete是在JavaScript保留关键字,您应该重命名功能。

... 
mess = mess + "<a href=# onclick=deletePerson('"+myvar+"');return false;><img src=x.gif></a>" + data[count].name + "<br />"; 
... 
function deletePerson(name) {...} 
+0

我的不好,该函数实际上并没有命名为删除,而是以我的母语翻译的“删除”。改变了它的计算器,但没有想到reserved-keyword-thing。感谢您指出这一点,但问题仍然未解决... – binoculars

+0

@binoculars你确定数据是一个数组吗?做一个console.log()来检查它,也许它是一个字符串,或者数组元素没有'name'属性。此外,你应该更新你的文章中的代码,以便它符合当前状态。 – deviousdodo

+0

我确定它是一个数组,它存在,因为它里面的'data [count] .name'的while循环工作得很好......(更新我的代码) – binoculars

相关问题