如何从 onclick 函数传递参数?

How to pass argument from onclick function?

我创建了一个 table 并使用 jQuery 填充了它。现在我想添加一个文本,比如当我们点击它时,一个函数就会执行。我已经使用 onclick 并且工作正常,但我还需要向我的函数发送一些参数,我如何从 onclick:

向目标函数发送参数
var dataHtml = '';
$.each(data, function (index, user) {
    dataHtml+="<code onclick=show_popup(1,user['donner'][0])> Donner details</code>";
});
$("#t-data").html(dataHtml);

function show_popup(show=0, donner){
    $(document).ready(function(){
    var showModel=show;
    if(showModel==`1`){
        $(`#modal-default-admin`).modal(`show`);
    }
});

但它显示“用户未定义”错误。用户已定义,我也可以访问它。

user实际上没有定义。您面临的问题是您使用 HTML 作为字符串,因此您提供 onclick=show_popup(1,user['donner'][0]) 作为字符串。当 jQuery 从该字符串“生成 HTML” 并单击它时,它会调用 show_popup1user['donner'][0] 以及 user这里是未定义的。它仅在 $.each 循环内可用,在循环外不可用。

最简单的解决方法是直接传递值,而不是尝试将其作为指针传递。

onclick=show_popup(1,\""+ user['donner'][0] +"\")>

像这样,它会在创建HTML时使用user['donner'][0]

奖励点:您应该用引号将 onclick 属性括起来:

dataHtml += "<code onclick='show_popup(1,\""+ user['donner'][0] +"\")'> Donner details</code>";

只是为了确保 user['donner'][0] 的值中的 space 不会再次破坏它。