假设我有一堂课:
Class Comment {
constructor(user, comment) {
this.username = document.createElement("span");
this.comment = document.createElement("p");
this.body = document.querySelector("body");
}
createComment() {
this.username.textContent = user;
this.commet.textContent = comment;
body.appendChild(this.username);
body.appendChild(this.comment);
}
}
每次用户在页面上输入用户名和评论并点击提交按钮时,它都会创建一个新的类实例(新评论!):
const submitButton = document.querySelector("#submitButton");
submitButton.addEventListener("click", () => {
let addComment = new Comment(userInput.value, commentInput.value);
}
我想将这些实例中的每一个存储在 localStorage 中(按顺序):
exisitingComments = []
localStorage.setItem("existingComments", JSON.stringify(existingComments));
存储分配给实例的变量 (addComment) 会导致方法 createComment 在加载时未定义:
window.onload = function() {
existingComments = JSON.parse(localStorage.existingComments);
let i = existingComments.length - 1;
for (; i >= 0; i--) {
existingComments[i].createCommet()
}
}
-> TypeError: existingComments[i].createComment is not a function
我无法存储用户名和评论并创建新的类实例,因为用户名和评论不应该是唯一的,如果用户想删除评论我无法知道它在 localStorage 中的位置(如果让我们说有多个相同的评论)。
起作用的一件事是每次单击提交按钮时,调用一个函数来循环整个评论部分:
const commentSection = document.querySelector("#commentSection").children;
for (x = 0; x < commentSection.length - 1; x++) {
commentSection[x].setAttribute("id", `comment#{x}`);
}
这些 id 对应于 localStorage 中评论的位置。
任何人都知道可以实现的更好方法吗?提前一百万谢谢!!
幕布斯6054654
相关分类