#javascript #html #local-storage
#javascript #HTML #локальное хранилище
Вопрос:
У меня есть список, и я хочу отредактировать его содержимое, нажав кнопку, затем сохранить его в localstorage и, нажав другую кнопку, я хочу удалить его, а также изменить локальное хранилище, мой список выглядит так: img1
function editButton(){
event.target.parentElement.setAttribute("contentEditable", true);
}
function deleteButton(){
event.target.parentElement.remove();
}
Кнопка удаления работает довольно хорошо, она удаляет элемент li на сцене, а не в локальном хранилище.
Кнопка редактирования делает весь li редактируемым, включая кнопки, но я хочу это изменить.
Мой список после нажатия кнопки редактирования выглядит следующим образом: img2
И вот как я храню свои элементы в локальном хранилище и как я их получаю:
function store(item){
let items = JSON.parse(window.localStorage.getItem('myItems'));
items = items === null ? [] : items;
console.log(items);
window.localStorage.setItem('myItems',JSON.stringify([...items,item]));
}
function getValues(){
let list = document.querySelector('ul');
let storedValues = JSON.parse(window.localStorage.getItem('myItems'));
if(!storedValues){
list.innerHTML = '';
}
else {
storedValues.forEach(val =>{
if(val){
list.innerHTML = '<li>' '<a>' val.name " " val.date '</a>' '<button onclick="editButton()">' "Edytuj" '</button>' '<button onclick="deleteButton()">' "Usuń" '</button>' '</li>';
}
})
}
}
Комментарии:
1. если
edit
delete
кнопкаli
включена, вам следует использовать другой div, чтобы он мог содержать все дочерниеli
элементы, кроме кнопок. И в вашей функции удаления / редактирования не реализован код localstorage.
Ответ №1:
Хорошо, я внес некоторые изменения, и удаление теперь работает хорошо
function deleteButton(){
event.target.parentElement.remove();
let a = event.target.parentElement.innerText;
let word = a.split(' ');
let item = new Array();
let i = 0;
let storedValues = JSON.parse(window.localStorage.getItem('myItems'));
window.localStorage.removeItem('myItems');
storedValues.forEach(val =>{
if(val.name === word[0]){
console.log(val.name);
}
else {
item[i] = new storage1(val.name,val.date);
i ;
}
});
window.localStorage.setItem('myItems',JSON.stringify(item));
storedValues = [];
}
Но я все равно попадаю в этот список редактирования, когда я меняю <li><a></a><button>...
<li><a><div></div></a>...
его, он не работает, есть ли способ редактировать только текст?
Или, может быть, просто прекратить ввод текста после ввода