带有复选按钮的待办事项列表



我想使用JavaScript和localStorage制作自己的to Do列表。输入后,按发送键,项目将被添加并显示在屏幕上。选中按钮将出现在项目旁边。在按下check按钮之后,我希望添加类。我想添加css(不透明度,线条…)。但是当我按下复选按钮时,控制台显示这个错误:Uncaught TypeError: Cannot read properties of undefined (reading 'add')At check (app.js:23)在HTMLElement。onclick (index . html: 30)

HTML代码:

<body>
<div class="main">
<input id="item" type="text">
<i id="addItem" class="fas fa-plus"></i><br> <br>
</div>
<div class="items">
<div id="addedItems"></div>
</div>
<i onclick='deleteAll()' class="fas fa-trash"></i>
</body>

JS代码:

const item = document.getElementById("item");
const add = document.getElementById("addItem");
const addedItems = document.getElementById("addedItems");
add.onclick = function() {
const itemValue = item.value;
const itemValue2 = ' ';
if (itemValue && itemValue2) {
localStorage.setItem(itemValue, itemValue2);
location.reload();
}
};
for (let a = 0; a < localStorage.length; a++) {
const itemValue = localStorage.key(a);
addedItems.innerHTML += `<div class= 'text'> <div>${itemValue}</div> <div> 
<i onclick='check("${itemValue}")' class="fas fa-check"></i><i 
onclick='deleteItem("${itemValue}")' class="fas fa-trash-alt"></i> 
</div></div> <br>`;
}
function check(itemValue) {
itemValue.classList.add("mystyle");
}
function deleteItem(itemValue) {
localStorage.removeItem(itemValue);
location.reload();
}
function deleteAll() {
localStorage.clear();
location.reload();
} 

你可以试试这个答案:

<script>
const item = document.getElementById("item");
const add = document.getElementById("addItem");
const addedItems = document.getElementById("addedItems");
add.onclick = function() {
const itemValue = item.value;
const itemValue2 = ' ';
if (itemValue && itemValue2) {
localStorage.setItem(itemValue, itemValue2);
location.reload();
}
};
for (let a = 0; a < localStorage.length; a++) {
const itemValue = localStorage.key(a);
addedItems.innerHTML += `<div class= 'text'> <div>${itemValue}</div> <div> 
<i onclick='check("${itemValue}", ${a})' class="fas fa-check" id="${a}"></i><i 
onclick='deleteItem("${itemValue}")' class="fas fa-trash-alt"></i> 
</div></div> <br>`;
}
function check(itemValue, id) {
const elem = document.getElementById(id);
elem.classList.add("mystyle");
}
function deleteItem(itemValue) {
localStorage.removeItem(itemValue);
location.reload();
}
function deleteAll() {
localStorage.clear();
location.reload();
}
</script>
<div class="main">
<input id="item" type="text">
<i id="addItem" class="fas fa-plus"></i><br> <br>
</div>
<div class="items">
<div id="addedItems"></div>
</div>
<i onclick='deleteAll()' class="fas fa-trash"></i>

我所做的唯一更改是传递id元素的复选框点击与itemValue元素。复选框值,而不是文档元素。如果你使用控制台,你就会知道itemValue只是字符串而不是DOM元素。

这里是小提琴:https://jsfiddle.net/aviboy2006/ortqu1ps/

最新更新