我正在为学校做一个项目,并且即将完成。我需要 code.org 在我的数据库中搜索在设定的日期发生的习惯。 (一周中的几天)然后放入列表中,然后显示到名为“TodaysHabits”的元素中,下面是我的代码。请注意,我只能使用 ES5 中的函数或经过 code.org 团队批准的函数(不能推送或弹出)
差点忘记这些变量了
var DateNum = new Date().getDay();
var DaysOfTheWeek = ["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];
var Day = DaysOfTheWeek[DateNum];
onRecordEvent("Habit Data", function(records) {
if (records.length == 0) {
setText("TodaysHabits","Today's Habits" + "\n" + "No Habits to check");
} else {
readRecords("Habit Data", {Day:true}, function(records) {
if(records.length>0){
for (var i =0; i < records.length; i++) {
appendItem(TodayHabitList, record[i]);
}
setText("TodaysHabits","Today's Habits:"+"\n"+TodayHabitList.join("\n"));
}
else if(TodayHabitList.length==0) {
setText("TodaysHabits","Today's Habits:"+"\n"+"No Habits scheduled today");
}
});
}
},true);
最后一行有一个“,true”的原因是为了在code.org数据库中所有现有的习惯上使用该程序。
我已经重写了这段代码至少 10 次,每次都比上一次稍微好一些。我没有保存它们(可怕的错误)并且没有它可供参考。
这是我的项目的链接我的 Code.org 项目 CSV 为“id、名称、描述、时间、星期日、星期一、星期二、星期三、星期四、星期五、星期六”
我忘了添加我要询问的部分是第142 - 158行
一些改进
研究函数 onRecordEvent 的 Code.org 文档。
onRecordEvent(table, eventType)
第一个参数是单个记录。第二个参数是一个 eventType,它告诉您记录发生了什么:
create
、update
或 delete
。您的代码错误地使用了事件,这是问题的一部分。
接下来,研究 readRecords 的文档。
readRecords(table, terms, callback)
terms 是用于过滤数据的
key:value
对的对象。例如,对于所有星期五的习惯,它将是 {friday: true}
或对于星期五和星期六 {friday: true, saturday: true}
。您的代码错误地使用了 {Day: true}。但是,Day 与数据库中的任何列名都不匹配,因此不会返回任何内容。
我们可以通过添加一个读取数据库并更新UI的函数来解决这些问题,如下所示。您开始在应用程序的更高版本中执行此操作。但是,它需要是一个单独的函数,而不是 onRecordEvent 的一部分。这样我们就可以在需要更新 UI 时调用它。
注意我们如何创建术语值来过滤数据。在普通的 JavaScript 中,我们可以像
terms = {[Day]: true}
那样更直接地做到这一点(参见:括号符号)。然而,在 Code.org 中,我们必须首先创建一个对象 terms = {};
,然后附加键 terms[Day] = true;
,它会生成类似 {friday: true}
的值。这样我们的 readRecords
将仅返回与当前星期几匹配的记录。
代码:
// update the UI when the app starts
showToday();
// update the UI when a record is added, updated, or deleted
onRecordEvent("Habit Data", function(record, eventType) {
showToday();
});
// UI update
function showToday() {
// Create a data filter based on the day-of-the-week.
var terms = {};
terms[Day] = true;
readRecords("Habit Data", terms, function(records) {
TodayHabitList = [];
for(var i = 0; i < records.length; i++) {
TodayHabitList.push(records[i].time + " - " + records[i].name);
}
setText("TodaysHabits", Day + " Habits:\n" + TodayHabitList.join("\n"));
});
}
块: 如 Code.org IDE 中所示