Solo quiero preguntar cómo pasar una matriz de objetos a otra función. tengo una funcion
function btnB(weekly) { console.log(weekly); } function btnA() { const array = [{ abc : 123 }, { def : 456 }] div.innerHTML = `<div onclick="btnB(${array[0]});"`; divList.appendChild(div); } btnA();Y estoy recibiendo un error
Uncaught SyntaxError: Unexpected identifierNo puede sustituir un objeto como ese en un literal de plantilla. Convierte el objeto en una cadena, que devuelve [Object object] .
Use JSON.stringify() para convertirlo en un objeto literal.
function btnA() { const array = [{ abc : 123 }, { def : 456 }] div.innerHTML = `<div onclick='btnB(${JSON.stringify(array[0])});'`; divList.appendChild(div); } También debe usar comillas simples alrededor del valor onclick , porque JSON usa comillas dobles alrededor de las claves de objeto.
function btnB(weekly) { console.log(weekly); } function btnA() { const array = [{ abc : 123 }, { def : 456 }]; const div = document.createElement('div'); // delete if useless div.addEventListener('click', () => { btnB(array[0]) }); divList.appendChild(div); }Supongo que el [0] es parte de su intento de resolver esto, pero en función de la pregunta que pide pasar una serie de objetos al controlador de clics, me referiré a eso en su lugar.
Los controladores de eventos en línea están en desuso y son problemáticos de todos modos, pero usarlos en HTML generado por JavaScript completa el círculo de una manera absurda. Sería mucho más fácil y más robusto (y seguro) adjuntar el controlador de clics a través de JavaScript también, de la siguiente manera:
const array = [{ abc: 123 }, { def: 456 }] div.innerHTML = '<div></div>' // Just the inner div without onclick div.firstElementChild.addEventListener('click', () => btnB(array)) divList.appendChild(div)