Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
¿Cómo hago para que el método splice() funcione en mi lista de tareas pendientes?

Estoy creando una lista de tareas pendientes simple y usaré el método de empalme para eliminar elementos de la lista. No puedo conseguir que funcione. Llevo el elemento empalmado a la consola, por lo que la "conexión" entre mi botón de eliminación y mi función de eliminación parece funcionar. También probé el método de corte y funciona, pero por alguna razón el método de empalme no funciona. A continuación se muestra la matriz que utilizo para insertar mis nuevos elementos en mi clase, la función que crea el HTML para los nuevos elementos pendientes y la función de eliminación de elementos. ¿Alguna idea de por qué el método de empalme no funcionará?

 //ARRAY FOR NEW TODO ITEMS let newTodo: Todo[] = []; // FUNCTION THAT CREATES THE HTML FOR THE NEW TODO ITEM let doneBtn = document.createElement("button"); function htmltask() { let taskDiv = document.createElement("div"); taskDiv.innerHTML = ""; for (let i = 0; i < newTodo.length; i++) { taskDiv.className = "taskDiv"; taskDiv.innerHTML = newTodo[i].todoItem; let btnContainer = document.createElement("div"); btnContainer.className = "btnContainer"; // REMOVEBTN // let removeBtn = document.createElement("button"); removeBtn.innerHTML = "REMOVE"; removeBtn.addEventListener("click", (e) => { remove(e, i); }); // DONEBTN // let doneBtn = document.createElement("button"); doneBtn.innerHTML = "DONE"; doneBtn.className = "doneBtn"; newTaskDiv.appendChild(taskDiv); taskDiv.appendChild(btnContainer); btnContainer.appendChild(doneBtn); btnContainer.appendChild(removeBtn); } localStorage.setItem("newTodo", JSON.stringify(newTodo)); } // FUNCTION TO REMOVE ITEMS function remove(e: Event, i: number) { newTodo.splice(i, 1); htmltask(); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cambió un poco su código, ahora funciona:

 <div> <button onClick="htmltask()">Action!</button> <div id="tasks" /> </div>
 type Todo = { todoItem: string } let newTodo: Todo[] = [ { todoItem: 'Eat'}, { todoItem: 'Sleep'}, { todoItem: 'Code'}, ]; function htmltask() { const allTasksDiv = document.getElementById("tasks"); allTasksDiv.innerHTML = ""; for (let i = 0; i < newTodo.length; i++) { const taskDiv = document.createElement("div"); taskDiv.className = "taskDiv"; taskDiv.innerText = newTodo[i].todoItem; const btnContainer = document.createElement("div"); btnContainer.className = "btnContainer"; // REMOVEBTN // const removeBtn = document.createElement("button"); removeBtn.innerText = "REMOVE"; removeBtn.addEventListener("click", (e) => remove(e, i)); // DONEBTN // let doneBtn = document.createElement("button"); doneBtn.innerText = "DONE"; doneBtn.className = "doneBtn"; btnContainer.appendChild(doneBtn); btnContainer.appendChild(removeBtn); taskDiv.appendChild(btnContainer); allTasksDiv.appendChild(taskDiv); } localStorage.setItem("newTodo", JSON.stringify(newTodo)); } function remove(e: Event, i: number) { newTodo.splice(i, 1); htmltask(); }

Aunque recomendaría eliminar el elemento de otra manera: busque el div del elemento y elimínelo. En lugar de recrear todo el bloque Todos desde cero.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda