var list = document.querySelector("#list");
这行代码用于通过使用 querySelector
方法来获取具有 id
为 “list” 的元素,并将其赋值给变量 list
。
function addToList(name) {
var option = document.createElement("option");
option.textContent = name;
list.appendChild(option);
}
这是一个名为 addToList
的函数,用于将给定的名称添加到 list
对象(即 <select>
元素)的选项中。它首先创建一个 <option>
元素,然后将给定名称作为该选项的文本内容,最后将该选项添加到 list
对象中。
var notes = JSON.parse(localStorage.getItem("notes")) || { " shopping list ": "" };
这行代码从本地存储中获取名为 “notes” 的数据,并通过 JSON.parse
方法将其解析为对象。如果本地存储中没有 “notes” 数据,则默认创建一个名为 " shopping list " 的笔记并将其值设为空字符串。
for (var name in notes)
if (notes.hasOwnProperty(name))
addToList(name);
这是一个 for...in
循环,用于遍历 notes
对象的属性。对于每个属性(即笔记名称),如果 notes
对象具有该属性,则调用 addToList
函数将该名称添加到 list
对象的选项中。
function saveToStorage() {
localStorage.setItem("notes", JSON.stringify(notes));
localStorage.setItem("lastSelectNote", list.value);
}
这是一个名为 saveToStorage
的函数,用于将 notes
对象保存到本地存储中。它使用 localStorage.setItem
方法将 notes
对象转换为 JSON 字符串,并保存在名为 “notes” 的键下。同时,它还将当前选中的笔记名称保存在名为 “lastSelectNote” 的键下。
var current = document.querySelector("#currentnote ");
这行代码用于通过使用 querySelector
方法来获取具有 id
为 “currentnote” 的元素,并将其赋值给变量 current
。
list.value = localStorage.getItem("lastSelectNote");
current.value = notes[list.value];
这两行代码用于设置 list
对象(即 <select>
元素)的选中值为从本地存储中获取的 “lastSelectNote” 键的值,并将 current
元素的值设置为 notes
对象中对应选中笔记名称的值。
list.focus();
这行代码将焦点设置到 list
对象上,以便用户可以通过键盘选择笔记。
list.addEventListener("change", function () {
current.value = notes[list.value];
localStorage.setItem("lastSelectNote", list.value);
});
这是一个事件监听器,用于在 list
对象的值发生改变时触发。当用户选择不同的笔记时,它会将相应笔记的内容更新到 current
元素,并将选中的笔记名称保存到 “lastSelectNote” 键中。
current.addEventListener("input", function () {
notes[list.value] = current.value;
saveToStorage();
});
这是一个事件监听器,用于在用户输入 current
元素的值时触发。当用户更新当前笔记的内容时,它会将新的内容保存到 notes
对象中,并通过调用 saveToStorage
函数将更新后的笔记列表保存到本地存储中。
function addNote() {
var name = prompt(" Notename", "");
if (!name) return;
if (!notes.hasOwnProperty(name)) {
notes[name] = "";
addToList(name);
saveToStorage();
}
list.value = name;
current.value = notes[name];
}
这是一个名为 addNote
的函数,用于添加新的笔记。它会提示用户输入笔记名称,并将输入的名称存储在变量 name
中。如果用户取消输入(即未输入名称),则函数提前返回。如果 notes
对象中不存在具有输入名称的属性,则将新的笔记添加到 notes
对象中(初始值为空字符串),并通过调用 addToList
函数将新的笔记名称添加到 list
对象的选项中。最后,它将新添加的笔记设置为选中的笔记,并将对应的内容更新到 current
元素。
function debounce(f, time) {
var id;
return function(...args) {
clearInterval(id);
id = setTimeout(() => {
return f.call(this, ...args);
}, time);
};
}
这是一个名为 debounce
的函数,用于创建一个防抖函数。防抖函数会将某个函数在一定时间内的连续调用合并为一次执行,以减少函数的频繁执行。它接受两个参数,即需要防抖的函数 f
和防抖的时间间隔 time
。该函数返回一个新的函数,该函数会在指定时间间隔后执行防抖函数 f
。
var list = document.querySelector("#list");
这一行代码通过querySelector
方法选择了id为"list"的元素,并将其赋值给名为list
的变量。
function addToList(name) {
var option = document.createElement("option");
option.textContent = name;
list.appendChild(option);
}
这是一个定义函数的语句,函数名为addToList
,接受一个参数name
。函数内部创建了一个option
元素,并将name
设置为option
元素的文本内容,最后将option
元素添加到list
中。
var notes = JSON.parse(localStorage.getItem("notes")) ||
{ " shopping list ": "" };
这行代码尝试从localStorage
中获取键为"notes"的数据。如果获取到了数据,则使用JSON.parse
方法将其解析为JavaScript对象,并将其赋值给名为notes
的变量。如果获取不到数据,则将notes
初始化为一个对象,其中包含一个名为" shopping list "的属性,属性的值为空字符串。
for (var name in notes)
if (notes.hasOwnProperty(name))
addToList(name);
这是一个for...in
循环,用于遍历notes
对象的属性。对于每个属性,如果该属性是notes
对象自身的属性(而不是继承自原型链),则调用addToList
函数,将属性名作为参数传递给函数。