Причина вашей проблемы:
Это потому, что в вашем JavaScript есть прослушиватель событий, прикрепленный к вставленному button
(а также к «кнопке сброса»),Следующая часть вызывает удаление, когда вы нажимаете на вставленный button
:
button.addEventListener('click', function () {
localStorage.clear();
while (ul.firstChild) {
ul.removeChild(ul.firstChild);
}
itemsArray = [];
});
Способ ее решения:
Можно дать «Очистить кнопку»определенный идентификатор и ссылаться на этот идентификатор в JavaScript, чтобы прикрепить click
- function
(сверху) к:
Для меня работает:
HTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>New Tab App</title>
<link rel="stylesheet" href="css/primitive.css">
</head>
<body>
<div class="small-container">
<h1>New Tab App</h1>
<form>
<input id="item" type="text" placeholder="New">
<button>save note</button>
</form>
<h2>Items</h2>
<ul></ul>
<button id="buttonClear">Clear All</button>
</div>
<script src="js/scripts.js"></script>
</body>
</html>
JavaScript:
const form = document.querySelector('form');
const ul = document.querySelector('ul');
const button = document.querySelector('button');
const input = document.getElementById('item');
let itemsArray = localStorage.getItem('items') ? JSON.parse(localStorage.getItem('items')) : [];
localStorage.setItem('items', JSON.stringify(itemsArray));
const data = JSON.parse(localStorage.getItem('items'));
const liMaker = (text) => {
const li = document.createElement('li');
li.textContent = text;
ul.appendChild(li);
}
form.addEventListener('submit', function (e) {
e.preventDefault();
itemsArray.push(input.value);
localStorage.setItem('items', JSON.stringify(itemsArray));
liMaker(input.value);
input.value = "";
});
data.forEach(item => {
liMaker(item);
});
clearbutton = document.getElementById("buttonClear");
clearbutton.addEventListener('click', function () {
localStorage.clear();
while (ul.firstChild) {
ul.removeChild(ul.firstChild);
}
itemsArray = [];
});