javascript - 未捕获的类型错误:tweets.push 不是函数
问题描述
我是 javascript 的新手,我一直在关注视频教程,最终得到了这个错误 Uncaught TypeError: tweets.push is not a function at addTweetLocalStorage (tweet.js:45)。我坚持下去,我不知道我做错了什么,因为我写了那个人在视频中写的确切代码
//variables
const tweet_list = document.querySelector('#tweet_list')
eventListeners();
//eventlisteners
// form submission
function eventListeners(){
document.querySelector('#form').addEventListener('submit', newTweet);
//remove tweet
tweet_list.addEventListener('click',removeTweet);
}
//functions
function newTweet(e){
e.preventDefault();
//read the textarea value
const text = document.querySelector('#text').value;
//create the remove button
const removeBtn= document.createElement('a');
removeBtn.classList='remove';
removeBtn.textContent='x';
//create an <li> document
const li=document.createElement('li');
li.textContent=text;
li.appendChild(removeBtn);
tweet_list.appendChild(li);
addTweetLocalStorage(text);
}
function removeTweet(e){
if (e.target.classList.contains('remove')) {
e.target.parentElement.remove();
}
}
//add tweet to local storage
function addTweetLocalStorage(text){
let tweets = getTweetsFromStorage();
tweets.push(text);
//convert tweet array into string
localStorage.setItem('tweets', JSON.stringify('tweets'));
}
function getTweetsFromStorage(){
let tweets;
const tweetsLS = localStorage.getItem('tweets');
if (tweetsLS === null) {
tweets = [];
}
else {
tweets=JSON.parse(tweetsLS);
}
return tweets;
}
解决方案
现在您的'tweets'
存储项目实际上是字符串'tweets'
,而'tweets'.push
不是函数。
localStorage.setItem('tweets', JSON.stringify('tweets'));
应该
localStorage.setItem('tweets', JSON.stringify(tweets));
并且您必须从本地存储中删除当前的字符串项目,并从没有项目开始。
推荐阅读
- excel - 是否可以在 VBA 中插入仅针对用户选择的单元格并在其上运行的公式的结果?
- python - pygame - 试图将爆炸矩形分配给老板
- python - maximum_filter1d 如何在 scipy 中工作?cval、origin、mode参数如何影响它?
- javascript - React:如何在 2 个不同的文件中强制执行 2 个对象的结构?
- node.js - 无法连接到 API 资源
- sql-server - 带编号的多表 CTE
- docker - 在哪里可以找到 docker-in-docker 的所有预定义变量的完整列表?
- gradle - gradle.build 如何使用主 build.gradle 中的属性并在子项目中定义它们
- javascript - Javascript - 组合和重组具有特殊属性的对象
- java - 尝试抓取相同的网址时,发布的职位数量不一致。可能会说 121 个工作,然后三秒钟后 300 个工作