Cocina casera
Hoy practiqué un plato casero que todo desarrollador conoce: una lista de tareas.
Hay muchas formas de cocinar este plato. Yo usé los ingredientes más simples, los que tienes en casa, y el método más básico. En este invierno no demasiado frío, espero que podamos calentarnos juntos los desarrolladores novatos. El resultado está al final, para que lo prueben—gratis.
Receta y pasos:
- Al pulsar el botón se añade un ítem (
createElement()). - Meter texto concreto en el ítem nuevo (convertir el input en un text node y luego
.appendChilda la lista). - Llevar el texto del campo de entrada al ítem nuevo (usar
input.value). - Solo añadir un ítem si el campo tiene texto.
- Escuchar Enter para añadir también (
addEventListener("keypress", function); el keycode de Enter es 13). - Escuchar clics en la lista y alternar el tachado en el ítem pulsado (
classList.toggle()). - Al añadir un ítem nuevo, incluir también un botón (crear un botón de borrar y añadirlo a la lista).
- Escuchar distintos casos: clic en el texto alterna el tachado; el botón de borrar elimina el ítem (quitar el padre con
target.parentElement.remove()). - Al añadir un ítem, asegurarse de que el nuevo botón de borrar también esté escuchado (volver a
querySelectorAlltodos los ítems y poner el listener en el último elemento).
Un poco de cebollino—cuidado con estos detalles:
- El argumento de
.appendChildsolo puede ser un elemento, así que el texto hay que pasarlo porcreateTextNodeantes de meterlo en la lista. - Meter el botón junto con el ítem hace que, al tachar el texto, también se tache la etiqueta del botón. Solución: envolver el texto en un
spany solo tachar si el clic es sobre esespan. .addEventListenerescucha padre e hijos a la vez, así que usa.targetpara el hijo y.currentTargetpara el padre.- Los botones de borrar de los ítems nuevos no funcionan al principio porque el botón nuevo no estaba escuchado—al añadir a la lista hay que registrar el botón nuevo.
- Al intentar escuchar el botón nuevo puede que aún no lo encuentres, así que vuelve a ejecutar
.querySelectorAllpara actualizar la selección de todos los botones.
Resulta que incluso esta «cocina casera» de todos los días necesita tantos detalles para el comensal. Cuando scrolleamos Facebook o navegamos por la web, rara vez pensamos que cada página es el sudor de un programador—cada botón es grano a grano.
Pruébalo: Cocina casera: «lista de lectura»