我有一个localStorage对象,如下所示:
密钥:jpxun
值:[{"id":"0","name":"royal"},{"id":"1","name":"tippins"},{"id":"4","name":"leviosa"},{"id":"5","name":"vicious"}]
我有这个JS来显示localStorage的输出:
var jpxun = JSON.parse(localStorage.getItem('jpxun')) || [];
if (jpxun) {
var jpxun_length = jpxun.length;
} else {
var jpxun_length = 0;
}
var hst = document.getElementById("usernames");
var MyUsernames = JSON.parse(localStorage.getItem("jpxun"));
if (jpxun_length > 0) {
// declare array to hold items for outputting later in plain text format
var plain_text_array = [];
for (var i = 0; i < MyUsernames.length; i++) {
var un1 = MyUsernames[i].name;
hst.innerHTML += "<li>" +"<a id="+MyUsernames[i].id + " href='#content' onclick='deleteById(this)'>x </a>" + un1 + "</li>";
// add word to plain text array
plain_text_array.push(un1);
}
}
每个元素都输出到一个列表项中,并以'x‘作为超链接,这样就可以单击它,并将该元素从localStorage中删除。
以下是从localStorage中删除项目的代码:
var deleteById = function ( self ){
MyUsernames = MyUsernames.filter(function(elem) {
return elem.id !== self.id;
});
localStorage.setItem("jpxun",JSON.stringify(MyUsernames));
self.parentNode.parentNode.removeChild(self.parentNode);
}
这很好用。
不幸的是,我并不真正理解deleteById
中的代码是如何工作的。
在这种情况下,当相应的记录的值从localStorage中删除时,我会纠结于如何从plain_text_array
中删除它。
发布于 2020-10-16 18:45:24
我会尝试在数组中查找包含该字符串'id="item_id"'
的文本
plain_text_array = plain_text_array.filter(item => !item.includes(`id="${self.id}"`));
只需将其添加到deleteById
函数的末尾。
https://stackoverflow.com/questions/64394696
复制