Estoy creando una aplicación de estilo de lista de tareas pendientes, pero estoy atascado en cómo crear solo elementos DOM solo a partir de elementos nuevos que se agregan a una matriz y seguirá representando el mismo elemento n veces si vuelve a hacer clic en el botón.
Tengo un formulario HTML simple que crea un título para un nuevo objeto ' Snippet '.
Luego los agrego a una matriz como esta
function addSnippetToArray() { let snippetTitle = document.getElementById('snippetTitle').value; let snippetToAdd = new Snippet(snippetTitle); snippetsArray.push(snippetToAdd); console.log(snippetsArray); }Luego estoy tratando de convertirlos en sus propios DIV usando un botón de formulario como este ...
function displaySnippets() { let container = document.getElementById('container'); let newCard = document.createElement('div'); snippetsArray.forEach(function (snip) { newCard.textContent = snip.title; container.appendChild(newCard); }) } Lo que no entiendo es que cuando llamo a displaySnippets() al final de la función addSnippetsToArray() , parece funcionar bien.
Pero si solo llamo a displaySnippets() usando su propio botón, solo representa el último elemento de la matriz y lo sigue representando varias veces si vuelve a hacer clic en el botón.
Lo que estoy tratando de hacer es...
Estoy llamando a las funciones desde el botón de esta manera:
<input type="button" value="Add snippet" onclick="addSnippetToArray()"> <input type= "button" value="Display" onclick="displaySnippets()">Debe crear nuevos divs para cada uno y vaciar el contenedor antes de hacer un bucle
const container = document.getElementById('container'); container.innerHTML = ""; // clear snippetsArray.forEach(function (snip) { let newCard = document.createElement('div'); newCard.textContent = snip.title; container.appendChild(newCard); })