为什么我在控制台中收到一条错误消息,指出getStoredQuests.push
不是Object.addQuestionOnLocalStorage
上的函数
class Question{
constructor(id, questionText, options, correctAnswer) {
this.id = id;
this.questionText = questionText;
this.options = options;
this.correctAnswer = correctAnswer;
}
}
let questionLocalStorage = {
setQuestionCollection: (newQuestion) => {
localStorage.setItem('questionCollection', JSON.stringify(newQuestion));
},
getQuestionCollection: () => {
return JSON.parse(localStorage.getItem('questionCollection'));
},
removeQuestionCollection: () => {
localStorage.removeItem('questionCollection');
}
}
newQuestion = new Question(questionId, newQuestText.value, optionsArr, corrAnswer);
getStoredQuests = questionLocalStorage.getQuestionCollection();
getStoredQuests.push(newQuestion);
questionLocalStorage.setQuestionCollection(getStoredQuests);
答案 0 :(得分:0)
错误是因为getStoredQuests
不是数组。您可能没有考虑过最初是否在本地存储区中没有问题,然后localStorage.getItem('questionCollection')
将返回空字符串,或者可能是您在本地存储区中使用键questionCollection
有一些值但不正确要解析为JSON数组对象的格式。
对于第一种情况,解决方案是检查localStorage.getItem('questionCollection')
是否为空,然后从getQuestionCollection
返回空数组;对于第二种情况,您需要正确格式化数组'(序列化要存储的数组JSON.stringify)”。
要让您的问题正确理解,请打开控制台,看看是否有红线