Tengo una función que crea un botón con una acción de "hacer clic" que llama a una segunda función. Esta segunda función recibirá parámetros de la primera (incluida una función). Así como esto:
function funcOne(argFunc, customMsg) { let div = document.createElement('div'); let button = `<button onclick='funcTwo(`+argFunc+`','`+customMsg+`)'>Go!</button>`; div.innerHTML = button; document.body.appendChild(div); } function funcTwo(argFunc, customMsg) { argFunc(customMsg); }Luego, llamando a funcOne:
funcOne(function(customContent) { alert(customContent) }, 'Hello World');Aparece el error "Error de sintaxis no detectado: final inesperado de la entrada" aquí:
let button = <button onclick='funcTwo( +argFunc+ ',' +customMsg+ )'>Go!</button> ;
En general, evite los controladores de eventos de estilo onxyz . Evítelos siempre cuando tenga una función (en lugar de una cadena) que necesite conectar dinámicamente. Tienen varios problemas, entre ellos que solo pueden llamar a funciones globales.
En su lugar, utilice el manejo de eventos moderno. Tampoco hay necesidad de análisis de HTML:
function funcOne(argFunc, customMsg) { const div = document.createElement("div"); const button = document.createElement("button"); button.textContent = "Go"; button.addEventListener("click", () => { funcTwo(argFunc, customMsg); }); div.appendChild(button); document.body.appendChild(div); } function funcTwo(argFunc, customMsg) { argFunc(customMsg); }