首页 > 解决方案 > 待办事项列表中完成的元素数量

问题描述

我正在尝试将我已完成的列表中的项目放在屏幕上。我想出了这个功能:

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
}

我不知道函数是错误的还是我只是在错误的地方调用它。我在这里看到了一些类似的帖子,但我无法理解(我是新手,提前抱歉)这是codepen链接:https ://codepen.io/lodesousa/pen/jOLOeLr

标签: javascriptcodepen

解决方案


@Chris G 已经在他们的评论中介绍了这一点,但我想更深入地探索你正在发生的事情。

这是您拥有的代码,用简单的英语:

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

发现错误?检查压痕。剧透:该函数没有返回任何内容。

您正在返回循环numberOfDone 的每次迭代,for而不是像您想要的那样在函数末尾返回。

在函数的错误位置返回值是一个非常常见的编程错误——我敢打赌每个程序员都曾遇到过这个问题。这是您应该考虑的事情:检查函数是否返回任何内容是调试函数时的一个很好的起点。

无论如何,干杯,欢迎来到 Stack Overflow!恭喜你的第一个问题!


推荐阅读