Estoy tratando de poner en la pantalla los elementos de una lista que he hecho. Se me ocurrió esta función:
function countDone() { let numberOfDone = 0 for (let i = 0; i < todoList.length; i++) { if (todoList[i].isDone === true) { numberOfDone = numberOfDone + 1 } return numberOfDone } } function printCountDone() { let f = countDone() document.querySelector('#todo-done').innerHTML = f }No sé si la función está mal o si simplemente la estoy llamando en el lugar equivocado. Vi algunas publicaciones similares aquí, pero no pude entender (soy un novato, lo siento de antemano) Aquí está el enlace de codepen: https://codepen.io/lodesousa/pen/jOLOeLr
@Chris G ya ha cubierto esto en sus comentarios, pero quería explorar lo que está sucediendo contigo con mayor profundidad.
Aquí está el código que tiene, en inglés simple:
function countDone: create variable "numberOfDone" and set to 0 iterate over all todos. for each todo: if the todo is done: increase variable "numberOfDone" by 1 return variable numberOfDone end iteration end function¿Detectar el error? Mira la sangría. Spoiler: la función no devuelve nada.
Está devolviendo numberOfDone cada iteración del bucle for en lugar de justo al final de la función como desea.
Devolver un valor en el punto equivocado de una función es un error de programación increíblemente común. Apuesto a que todos los programadores se han enfrentado a esto en algún momento. Eso es algo en lo que debería pensar en el futuro: verificar si una función devuelve algo es un excelente punto de partida al depurar funciones.
De todos modos, saludos y bienvenidos a Stack Overflow. ¡Felicitaciones por tu primera pregunta!