2013-10-27 136 views
-4

我需要的是能够将一个字符串传递给JavaScript函数,该函数在一个div的onclick事件说明,如何传递一个字符串作为参数传递给javascript函数

$("#div").html("<div id='suggestion' onclick='storetag("+response[i]['tagname']+")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 

在这里我无法将响应[i] ['tagname']传递给storetag(),因为它是一个字符串,并且需要在其周围使用quetos

回答

0

你需要把引号包围值的字符串:

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 
+1

为什么downvote?如果你不解释你认为什么是错的,它不能改善答案。 – Guffa

+0

这也是正确答案+我的身边投票。 – Manwal

+0

@BenjaminGruenbaum:除非你明确指出你认为代码的可怕性,否则我甚至不能对你的意见发表意见。 – Guffa

0

而不是使用内联JS,您必须处理包含字符串,请执行以下操作:

var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>'); 
div.find('b').html(response[i]['tag']).on('click', function() { 
    storetag(response[i]['tagname']); 
}); 
$("#div").html(div); 

通过这种方式,您可以先创建DOM,然后正确附加事件处理程序,而不必将JS代码放入字符串中。

如果你运行在一个循环的代码(i使这可能):

  • 不要使用id="suggestion"。 ID必须是唯一的!
  • 所以当处理程序执行时使用了适当的i值使用下面的JS代码:

    var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>'); 
    div.find('b').html(response[i]['tag']); 
    (function(tagname) { 
        div.on('click', function() { 
         storetag(tagname); 
        }); 
    })(response[i]['tagname']); 
    $("#div").html(div); 
    
+0

thanx,是它正在循环运行 和关于id是唯一的,我已经指定css规则为id”建议“,并且我需要每个由div生成的div循环具有相同的ID,这样我就不必为循环产生的每个ID指定规则 –

+1

你在做什么是**错误**!改为使用CSS类!您可以根据需要在尽可能多的元素上使用它们。 – ThiefMaster

+0

嗯,永远不会考虑tht, thnx again –

0

试试这个

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 

在这里我添加\“在您的代码

+0

这是正确的答案,你是唯一一个阅读过这个问题的人。 –

+0

thanku @web_bod非常感谢。 Appriciated。你也可以接受这个答案。 – Manwal

+0

@DeepakManwal Thanx,问题解决了 –

相关问题