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

139
Vistas
Problema con el botón de segmentación creado con addEventListener

Estoy aprendiendo Vanilla JS y tratando de hacer un proyecto de "Lista de tareas pendientes". Entonces, la idea es simplemente agregar valores del formulario a la lista. Después de eso, agrego botones de edición/eliminación para cada li en la lista y coloco addEventListener en esos botones. Por alguna razón, el detector de eventos está dirigido al botón del formulario. Cuando hago clic en el botón para agregar un nuevo elemento en la lista, hay un oyente de clic que quiero en el botón de edición.

Intento diferentes formas de apuntar al botón derecho con parentNodes o childNodes, encuentro el mismo código que el mío, pero eso no funciona para mí.

 function newItem() { let input = document.getElementById("input").value; if (input != "") { let li = document.createElement("li"); li.appendChild(document.createTextNode(input)); let editButton = document.createElement("button"); editButton.appendChild(document.createTextNode("Edit")); li.appendChild(editButton); editButton.addEventListener("click", console.log('a')); let ul = document.getElementById("list"); ul.appendChild(li); document.getElementById("input").value = ""; } function editItem() { alert('e'); } }
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>To Do!</title> </head> <body> <h1>To do list</h1> <div> <input id = "input" type = "text" placeholder="What do you want to do?" value=""> <button id = "enter" onclick = "newItem()">Ok</button> </div> <p id="proba"></p> <div> <ul id = "list"> </ul> </div> <script type="text/javascript" src="todo.js"></script> </body> </html>

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Deberá pasar una función a su método addEventListener como esta: editButton.addEventListener("click", editItem) .

Recuerda que no tienes que agregar el parámetro en el paréntesis de tu función.

También puede invocar una función anónima como esta y luego agregar su función al bloque derecho: editButton.addEventListener("click", () => editItem()) .

 function newItem() { let input = document.getElementById("input").value; if (input != "") { let li = document.createElement("li"); li.appendChild(document.createTextNode(input)); let editButton = document.createElement("button"); editButton.appendChild(document.createTextNode("Edit")); li.appendChild(editButton); editButton.addEventListener("click", () => editItem()); let ul = document.getElementById("list"); ul.appendChild(li); document.getElementById("input").value = ""; } function editItem() { alert('e'); } }
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>To Do!</title> </head> <body> <h1>To do list</h1> <div> <input id = "input" type = "text" placeholder="What do you want to do?" value=""> <button id = "enter" onclick = "newItem()">Ok</button> </div> <p id="proba"></p> <div> <ul id = "list"> </ul> </div> <script type="text/javascript" src="todo.js"></script> </body> </html>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe pasar una función en addEventListener, no solo código.

 editButton.addEventListener("click", ()=>{console.log('a')});

O páselo a editItem

 editButton.addEventListener("click", editItem);
about 4 years ago · Juan Pablo Isaza Denunciar

0

addEventListener toma una cadena y una función de devolución de llamada, al pasar console.log('a') , JavaScript pasa el valor de retorno de console.log , que no está definido. En su lugar, debe envolverlo en una función como esta: editButton.addEventListener('click', () => { console.log('a'); }) .

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