如何使用按钮删除本地网络存储中的对象[重复]

Posted

技术标签:

【中文标题】如何使用按钮删除本地网络存储中的对象[重复]【英文标题】:How to delete an object in local webstorage with a button [duplicate] 【发布时间】:2021-04-17 12:11:48 【问题描述】:

我有一个学校项目,我需要制作一个音乐网站,它几乎完成了,但是我在使用网络本地存储制作播放列表时遇到了问题。

'use strict'

const configs = 
  PLAYLIST_KEY: "playlist",
;

function addMusicToPlaylist(data) 
  let musics = new Array();

  if (localStorage.hasOwnProperty(configs.PLAYLIST_KEY)) 
    musics = JSON.parse(localStorage.getItem(configs.PLAYLIST_KEY));
  

  musics.push(data);

  localStorage.setItem(configs.PLAYLIST_KEY, JSON.stringify(musics));


$(".add-music-button").on("click", function () 
  let musicRef = $(this).data("ref");

  let musicObject = 
    author: $(`#$musicRef .music-author`).html(),
    title: $(`#$musicRef .music-title`).html(),
  ;

  addMusicToPlaylist(musicObject);
);

$(document).ready(function () 

  if ($("#playlist-table").length > 0) 
    if (localStorage.hasOwnProperty(configs.PLAYLIST_KEY))  // testa se o objecto tem a propriedade especificada

      JSON.parse(localStorage.getItem(configs.PLAYLIST_KEY)).map(
        (music, index) => 
          $("#playlist-table").append(`
          <tr id="music-$index">
            <td class="music-author">$music.author</td>
            <td class="music-title">$music.title</td>
          </tr>
          <tr><td><p class="textoFav"></p></td> musica<td><button class="favBotao" onclick="apagar()" ><i class="fa fa-remove"></i></button></td></tr>
        `);
        
      );
    
  
);

function apagar ()
    localStorage.removeItem('playlist')



我只能删除播放列表中的所有音乐,但我只想删除一首音乐,如下所示:

"按钮1:音乐1

按钮 2:音乐 2

按钮 3:音乐 3

按钮 4:音乐 4"

如果用户按下按钮 3,我希望它从播放列表中删除音乐 3。 我该怎么做?

【问题讨论】:

您应该setItem(musics) 其中musics 是没有您要删除的元素的数组 - 您必须更新本地存储项目内容,而不是完全删除它。 不要将其视为“本地存储中的音乐”;将其视为一组项目。如何从数组中删除一个项目? slice。一旦你得到你想要的数组,序列化并存储在本地存储中。 【参考方案1】:

设置索引参数,即:onclick="apagar(index)"

然后,创建apagar函数:

function apagar(index) 
   let musics = new Array();
   musics = JSON.parse(localStorage.getItem(configs.PLAYLIST_KEY));

   musics = musics.filter((_, i) => i !== index);

   localStorage.setItem(configs.PLAYLIST_KEY, JSON.stringify(musics));

【讨论】:

如果我在 "onclick = "apagar(index)" 中设置和索引参数给我并且错误提示:"索引未定义 使用字符串插值:apagar($ index )

以上是关于如何使用按钮删除本地网络存储中的对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

你如何删除存储在网络上的 Sembast db 中的所有数据?扑

如何在本地安排 React 中的重复网络通知?

我正在创建一个最喜欢的 react 列表。我已经能够添加、获取和删除本地存储中的项目。我如何让心形按钮持续存在

本地储存(localStorage)记录

如何从 ydn.db 中删除存储?

github 创建网络仓库 ,使用git工具将本地文件上传/删除 --- 心得