<div>
<p><input class="check" id="check-option-1" name="name" type="checkbox">
<label for="check-option-1"></label>
</p>
<p class="copy">1</p>
<p class="copy-2">1.1</p>
</div>
<div>
<p><input class="check" id="check-option-2" name="name" type="checkbox">
<label for="check-option-2"></label>
</p>
<p class="copy">2</p>
<p class="copy-2">2.1</p>
</div>
</div>
<div class="modal">Здесь ничего нет</div>
function actChecked(id) {
const checkedName = 'checked';
let current = localStorage.getItem(checkedName);
if (id === 'ready') {
if (current !== null) {
JSON.parse(current).forEach(v => {
$('#' + v).prop('checked', true);
});
}
return;
}
if (current === null) {
return localStorage.setItem(checkedName, JSON.stringify([id]));
}
let arrCurrent = JSON.parse(current);
const iof = arrCurrent.indexOf(id);
if (iof !== -1) {
arrCurrent.splice(iof, 1);
return (arrCurrent.length === 0) ? localStorage.removeItem(checkedName) : localStorage.setItem(checkedName, JSON.stringify(arrCurrent));
} else {
arrCurrent.push(id);
return localStorage.setItem(checkedName, JSON.stringify(arrCurrent));
}
}
function getHTML(){
const checkedName = 'local';
const current = localStorage.getItem(checkedName);
if (current !== null) {
let id = $('.check').attr('id');
let name = $('.copy');
let descr = $('.copy-2');
const objCurrent = ({
id: id,
name: name,
descr: descr
});
localStorage.setItem(checkedName, objCurrent );
const arrCurrent = JSON.parse(current);
let mHTML = '';
arrCurrent.forEach(id => {
let replace = '';
$('#' + id).parent().siblings(objCurrent).each(function() {
replace += this.outerHTML.replace(/(<|<\/)p/g, '$1span');
});
mHTML += '<div class="item">' + replace + '</div>';
})
return mHTML;
} else return;
}
$('body').on('change', '.check', function(){
var modal = $('.modal');
if ($('input').is(':checked')) {
if (!modal.children().is('.item')) modal.html('');
} else {
modal.removeClass('modal-show').text('Здесь ничего нет');
}
if ($(this).prop('checked')) {
modal.addClass('modal-show');
}
actChecked($(this).attr('id'));
modal.html(getHTML());
});
<div class="modal">Здесь ничего нет</div>
localStorage.setItem('ключ', 'значение')
localStorage.getItem('ключ')
сохранить в localStorage новые объектыlocalStorage хранит строки, и далеко не все объекты могут быть без потерь сериализированы в строку и обратно. Уточните, что именно вы хотите сохранять.
<div class="modal">Здесь ничего нет</div>
<div>
<p><input class="check" id="check-option-1" name="name" type="checkbox">
<label for="check-option-1"></label>
</p>
<p class="copy">1</p>
<p class="copy-2">1.1</p>
</div>
<div>
<p><input class="check" id="check-option-2" name="name" type="checkbox">
<label for="check-option-2"></label>
</p>
<p class="copy">2</p>
<p class="copy-2">2.1</p>
</div>
</div>
<div class="modal">Здесь ничего нет</div>
<div>
<p><input class="check" id="check-option-1" name="name" type="checkbox">
<label for="check-option-1"></label>
</p>
<p class="copy">1</p>
<p class="copy-2">1.1</p>
</div>
<div>
<p><input class="check" id="check-option-2" name="name" type="checkbox">
<label for="check-option-2"></label>
</p>
<p class="copy">2</p>
<p class="copy-2">2.1</p>
</div>
</div>
<div class="modal">Здесь ничего нет</div>
if (localStorageKey !== null ) {
lsContent.push({
id: id,
p: paragraf
});
}
чтобы в localStorage хранились только значения параграфов, а не весь html ?что такое "значение параграфа"?
if (localStorageKey !== null ) {
lsContent.push({
id: id,
p: paragraf
});
}
тут поможет только одно - если кто-то сделает всю работу за тебя
писать бредятины типа let if
0: {id: "6",…}
id: "6"
image: "image"
name: "name"
price: "price"
1: {id: "7",…}
id: "7"
image: image"
name: "name"
price: "price"
{check-option-1: "11.1", check-option-2: "22.1"}
check-option-1: "11.1"
check-option-2: "22.1"
0: {id: "id",…}
id: "id"
p: "текст параграфа"
1: {id: "id",…}
id: "id"
p: "текст параграфа"
0: {
id: id,
p: текст параграфа
},
1: {
id: id,
p: текст параграфа
}
....
и.т.д
хранить только текст параграфов, без всяких тегов
возьмите не outerHTML а textContent
и с присвоением textContent у меня в модальном окне теги p пропали
{check-option-1: "11.1", check-option-2: "22.1"}
check-option-1: "11.1"
check-option-2: "22.1"
0: {id: "id",…}
id: "id"
p: "текст параграфа"
1: {id: "id",…}
id: "id"
p: "текст параграфа"
0: {
id: id,
p: текст параграфа
},
1: {
id: id,
p: текст параграфа
}
....
и.т.д
if (Object.keys(list).length) {
for (let key in list) {
document.getElementById(key).checked = true
modal.innerHTML += list[key]
}
}
document.addEventListener('change', evt => {
if (evt.target.matches(checkboxSelector)) {
if (evt.target.checked) {
addToList(evt.target)
} else {
delete list[evt.target.id]
}
updateModal(list)
saveChanges(list)
}
})
мне нужно примерно вот так:
0: {id: "6",…}
id: "6"
image: "image"
name: "name"
price: "price"
... в вашем примере ...
0: {id: "id",…}
id: "id"
p: "текст параграфа"
1: {id: "id",…}
id: "id"
p: "текст параграфа"
0: {
id: id,
p: текст параграфа
},
1: {
id: id,
p: текст параграфа
}
....
и.т.д
0: {
id: id,
p: текст параграфа
},
check-option-1: "11.1"
check-option-2: "22.1"
0: {
id: id,
p: текст параграфа
},
list[elem.id], далее list[key] - JSON.parse(localStorage.getItem(localStorageKey)) || {}
почему вы не хотите показать, как нужно сделать ?
в каком месте добавить ключи, не совсем ясноа откуда мне знать в каком месте вы хотите добавить ключи?
for (var i in cart) {
if (cart[i].id === id) {
$('#' + id).prop('checked', true);
saveCart();
return;
}
у меня почему-то не отмечаются галочки после перезагрузки, которые я ранее отмечал
if ($(this).prop('checked')) {
let id = $(this).attr('id');
let p = $(this).parent().siblings('.copy, .copy-2').text();
shoppingCart.addItemToCart(id, p);
modal.addClass('modal-show');
}
Не можете нормально описать какое поведенеие вы ожидаете увидеть.
for (var i in cart) {
Возможно в цикле как-то можно
}
if (cart !== null) {
JSON.parse(cart).forEach(v => {
$('#' + v).prop('checked', true);
});
document.addEventListener('change', evt => {
if (evt.target.matches(checkboxSelector)) {
if (evt.target.checked) {
addToList(evt.target)
} else {
delete list[evt.target.id]
}
updateModal(list)
saveChanges(list)
}
})
а зачем тогда вы советуете заведомо неправильный ответ ?
Ведь в вашем примере вы не через localStorage удаляли id чекбоксов, а:
не знаете, как теперь можно удалить из localStorage ?
По клику на иконку в модальном окне, у меня должны удаляться элементы
Только проблема в том, что я не могу удалить все элементы, может подскажите как удалять элементы правильно по клику на иконку?