除了切换全部功能,我的代码正常运行;它什么都不做。没有错误消息
我已经多次读取证明,并尝试使用布尔值替换true和false。什么都没用。以下是什么都不做的部分: *这个。参考待办事项清单。 “ todos”是具有两个属性的对象:1. Todo Text,2.完成状态。
代码的其余部分已经有一个for循环,用于将待完成的todo函数显示为已完成或由“(x)”表示的已完成和已完成的todos函数。 待办事项名称旁边的“()”不完整。
toggleAll: function() {
var totalTodos = this.todos.legth;
var completedTodos = 0;
for (var i = 0; i < totalTodos; i++) {
if (this.todos[i].completed === true) {
completedTodos++;
}
}
if (completedTodos === totalTodos) {
for (var i = 0; i < totalTodos; i++) {
this.todos[i].completed = false;
}
} else {
for (var i = 0; i < totalTodos; i++) {
this.todos[i].completed = true;
}
}
this.displayTodos();
};
如果任何待办事项不完整,则应将所有待办事项切换为已完成,如果所有待办事项已完成,则应将所有待办事项切换为未完成。而是,该列表与执行toggleAll之前的列表相同。没有错误消息。
答案 0 :(得分:0)
如果您的代码中确实有this.todos.legth
的错字,您将不一定会看到错误消息,因为它只会返回undefined
而不是抛出某种“找不到属性”您可能会用其他语言看到的例外。
this.todos = ["some", "objects", "go", "here"];
console.log(this.todos.legth); // returns undefined
console.log(this.todos.length); // returns 4
然后,您的所有其他循环将无济于事,因为它们要么迭代到最大值undefined
,要么创建诸如completedTodos === totalTodos
-> 0 === undefined
之类的条件。
这是固定代码。
toggleAll: function() {
var totalTodos = this.todos.legth;
var completedTodos = 0;
for (var i = 0; i < totalTodos; i++) {
if (this.todos[i].completed === true) {
completedTodos++;
}
}
if (completedTodos === totalTodos) {
for (var i = 0; i < totalTodos; i++) {
this.todos[i].completed = false;
}
} else {
for (var i = 0; i < totalTodos; i++) {
this.todos[i].completed = true;
}
}
this.displayTodos();
}
};
答案 1 :(得分:0)
有些事情,您的代码不正确,因为
var totalTodos = this.todos.legth
不起作用。您也可以简化您的代码。.我假设totalTodos是一个数组。考虑使用内置的Array函数,例如过滤器,地图。
例如
toggleAll: function() {
const totalTodos = this.todos.length;
const todos = this.todos;
// (1) find out if all are completed using filter
const areAllCompleted = todos.filter(e => e.completed).length ===
totalTodos;
// (2) Flip all items using Array.map
this.todos = todos.map(i => {...i, complete: !areAllCompleted })
this.displayTodos();
};
希望所建议的代码更容易阅读,并向您介绍以下内容
...
Array.map
Array.filter
!运算符
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter