【问题标题】:Javascript, items persist in local storage after being removedJavascript,项目在被删除后保留在本地存储中
【发布时间】:2020-08-24 02:11:48
【问题描述】:

我正在构建一个电话簿,用户可以在其中添加、删除和搜索联系人。到目前为止一切正常,我可以在本地存储中添加和保存联系人,也可以在 UI 中删除它们。但是删除它们后,它们仍然保留在本地存储中,因此在刷新页面时它们会重新出现。 欢迎提出任何建议!

// Contact class:

    class Contact {
      constructor(name, phone) {
     
        this.name = name;
        this.phone = phone;
    	 }   
    } 

// output

    static addContactToList(contact) {
    const itemDiv = document.querySelector('#contact-items');  
        const list = document.querySelector('#names');
    		
        list.insertAdjacentHTML("afterbegin", `
          </li>
          <li class="collection-item">
                
      <a href="#"><i class="fas fa-user text-blue "></i><span class="text-grey">${contact.name} </span></a>
      
          <span class="contact-phone"><i class="fas fa-phone text-blue phi "><span class="text-grey ph">${contact.phone}</span></i></span>
             
    	<i class="far fa-trash-alt delete"></i>
    	</li> `);
    	    
      }

//removeContact function in the Store class:

    static removeContact(phone) {
        const contacts = Store.getContact();
         
        contacts.forEach((contact, index) => {
    	  
          if(contact.phone === phone) {
            contacts.splice(index, 1);
          }
    	  
        });
    	
        localStorage.setItem('contacts', JSON.stringify(contacts));
    	 
      } 
    }

//call the method:

document.querySelector('#contact-items').addEventListener('click', (e) => {
	
    
      Store.removeContact(e.target.parentElement);
      
      
    });


【问题讨论】:

  • 我不明白问题出在哪里。你有什么问题?
  • 它应该可以工作,你能把你的代码添加到codesandbox repo并粘贴,这样我就可以更好地调试了
  • 您不应该在循环遍历数组时拼接(修改)数组,您可能会跳过元素,因为它们的索引会因修改而发生变化。如果您只删除一个元素,可能看不到这一点,但如果您尝试删除多个元素,则会注意到它。

标签: javascript local-storage


【解决方案1】:

试试这个...

static removeContact(phone) {
    const contacts = Store.getContact();
    contacts = contacts.filter(c => contact.phone !== phone )
    localStorage.setItem('contacts', JSON.stringify(contacts));
}

【讨论】:

  • 感谢您的反馈。这也不起作用。我仍然无法弄清楚代码在哪里被破坏..我一直在寻找解决方案。
猜你喜欢
  • 1970-01-01
  • 2019-11-26
  • 2021-09-02
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
相关资源
最近更新 更多