本地存储不存储值,当我刷新时它会清除内存

Local storage isn't storing the value, when I refresh it clears out the memory

我正在尝试将 oninput 事件侦听器值存储在网络浏览器的本地存储中。例如:如果我在表单输入字段中输入内容,它应该存储在本地存储中,并且当我刷新页面时它应该仍然存在。我阅读了几篇博客并观看了有关本地存储的教程,并做了同样的事情,但它对我不起作用。谁能指出错误,我该如何解决?

提前致谢!

<form class="form" action="https://formspree.io/f/meqvlgqr" method="POST">
    <input
      type="text"
      name="name"
      maxlength="30"
      placeholder="Full Name"
      required
      class="input"
    />
    <input
      type="email"
      name="email"
      placeholder="example@gmail.com"
      required
      class="input"
    />
    <textarea
      rows="4"
      cols="50"
      name="message"
      placeholder="Write your message here ..."
      required
      maxlength="500"
      class="input-textarea"
    ></textarea>
    <button type="submit" class="contact-button">Get It Touch</button>
  </form>

oninput 值显示在控制台选项卡的检查器工具上,但是当我转到应用程序选项卡并检查存储时,它显示了 JSON 对象,但它的值为空。

const storeName = document.querySelector('input[type=text]');
const storeEmail = document.querySelector('input[type=email]');
const storeMessage = document.querySelector('.input-textarea');
const userDetails = { name: '', email: '', message: '' };

storeName.addEventListener('input', (e) => {
  userDetails.name = e.target.value;
  console.log(userDetails.name);
});

localStorage.setItem('userDetails', JSON.stringify(userDetails));

您必须将本地存储 setItem 操作放在输入事件侦听器中

 const storeName = document.querySelector('input[type=text]');
 const storeEmail = document.querySelector('input[type=email]');
 const storeMessage = document.querySelector('.input-textarea');
 const userDetails = { name: '', email: '', message: '' };
 
 storeName.addEventListener('input', (e) => {
   userDetails.name = e.target.value;
   console.log(userDetails.name);
   localStorage.setItem('userDetails',JSON.stringify(userDetails));
 });

或者为了优化性能,把它放在表单提交事件监听器中

document.querySelector('.form').addEventListener('submit',function(evt){
  evt.preventDefault();
  localStorage.setItem('userDetails', JSON.stringify(userDetails));
})