Creé una tabla y la llené usando jQuery. Ahora me gustaría agregar un texto como cuando hacemos clic en él, se ejecuta una función. He usado onclick y funcionó bien, pero también necesito enviar algunos argumentos a mi función, ¿cómo puedo enviar argumentos a la función objetivo desde 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`); } });Pero muestra un error de "usuario no definido". El usuario está definido y también puedo acceder a él.
De hecho, el user no está definido. El problema al que se enfrenta es que está utilizando HTML como una cadena, por lo que está proporcionando onclick=show_popup(1,user['donner'][0]) como cadena. Cuando jQuery "hace HTML" a partir de esta cadena y hace clic en ella, llama a show_popup con 1 y user['donner'][0] y el user aquí no está definido. Solo estaba disponible dentro del bucle $.each , no fuera de él.
La solución más simple es pasar el valor directamente y no intentar hacerlo como un puntero.
onclick=show_popup(1,\""+ user['donner'][0] +"\")> Así, utilizará el valor de user['donner'][0] al crear el HTML.
Punto de bonificación: debe envolver el atributo onclick con comillas:
dataHtml += "<code onclick='show_popup(1,\""+ user['donner'][0] +"\")'> Donner details</code>"; Solo para asegurarse de que, por ejemplo, un espacio en el valor del user['donner'][0] no lo vuelva a romper.