gpt4 book ai didi

javascript - 存储和显示多个输出

转载 作者:行者123 更新时间:2023-11-28 02:27:38 24 4
gpt4 key购买 nike

我有一个简单的文本输入,用户可以在其中输入任何内容,然后将文本显示在页面上并停留在那里,这是我使用 localStorage 完成的,但是在刷新页面后,只显示最后输入的内容,我将发布我的代码以获取更多信息具体:

HTML:

<body>
<input id="NewPostField" type="text" value="">
<button onclick="myFunction()">Post</button>
<div id="Posts"></div>
</body>

JavaScript:

function myFunction() {
var NewPostField =
document.getElementById("NewPostField");
var newPost = document.createElement("p");

localStorage.setItem('text',
NewPostField.value);
newPost.innerHTML = NewPostField.value;

var Posts = document.getElementById("Posts");
Posts.appendChild(newPost);
}

(function() {
const previousText = localStorage.getItem('text');
if (previousText) {
var NewPostField = document.getElementById("NewPostField");
NewPostField.value = previousText;

myFunction();
}
})();

任何帮助都会很棒!

最佳答案

您的代码似乎只存储最后发布的值。

要存储多个帖子,一个想法是 stringify要存储在 localStorage 中的值数组。
然后,parse根据需要将该字符串化值返回到数组中。

这是一个例子:

function getExistingPosts() {

// fetch existing data from localStorage
var existingPosts = localStorage.getItem('text');

try {

// try to parse it
existingPosts = JSON.parse(existingPosts);

} catch (e) {}

// return parsed data or an empty array
return existingPosts || [];

}

function displayPost(post) {

// display a post

var new_post = document.createElement("p");
new_post.innerHTML = post;
posts.appendChild(new_post);

}

function displayExistingPosts() {

// display all existing posts

var existingPosts = getExistingPosts();

posts.innerHTML = '';
inputPost.value = '';

if (existingPosts.length > 0) {
existingPosts.forEach(function(v) {
displayPost(v);
});
inputPost.value = existingPosts.slice(-1)[0];
}

}

function addPost(post) {

// add a post

var existing = getExistingPosts();
existing.push(post);
localStorage.setItem('text', JSON.stringify(existing));
displayPost(post);

}

function clearPosts() {

// clear all posts

localStorage.removeItem('text');
displayExistingPosts();

}


var posts = document.getElementById("posts");
var inputPost = document.getElementById("input_post");
var btnPost = document.getElementById('btn_post');
var btnClear = document.getElementById('btn_clear');

btnPost.addEventListener('click', function() {
addPost(inputPost.value)
});

btnClear.addEventListener('click', clearPosts);

displayExistingPosts();
<input id="input_post" type="text" value="">
<button type="button" id="btn_post">Post</button>
<button type="button" id="btn_clear">Clear</button>
<div id="posts"></div>

localStorage isn't supported in StackSnippets , 这是一个 JSFiddle帮助演示。

关于javascript - 存储和显示多个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com