javascript - 如何使用所述列表项上的按钮删除列表项
问题描述
我正在建立一个待办事项列表,但我无法弄清楚删除功能。我不断收到一条错误消息,指出“找不到节点”。
我自己编写了大部分代码,但我查找了这部分的教程。他们建议使用:
function removeItem() {
var item = this.parentNode.parentNode;
var parent = this.parentNode;
parent.removeChild(item);
};
我试图将它应用于我已经拥有的代码,但它似乎不起作用。我也不完全清楚以下逻辑:
var item = this.parentNode.parentNode;
var parent = this.parentNode;
如果有人也可以解释这也将不胜感激。
HTML:
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="resources/css/styles.css">
</head>
<body>
<header id="addtodo">
<input type="text" id="input" placeholder="Add an item"/>
<button id="button" type="button">Add item</button>
</header>
<div id="listcontainer">
<ul id="itemlist">
</ul>
</div>
<div id="dividerline">
</div>
<div id="completecontainer">
<ul id="completed">
</ul>
</div>
<script src="resources/JS/code.js"></script>
</body>
JavaScript:
document.getElementById('button').addEventListener('click', function(){
var value = document.getElementById('input').value;
var item = document.createElement("li");
var itemText = document.createTextNode(value);
var itemdiv= document.createElement('div');
var buttons=document.createElement('div');
var text=document.createElement('div');
var remove = document.createElement("button");
var complete = document.createElement("button");
var itemlist = document.getElementById('itemlist');
item.appendChild(itemdiv);
itemdiv.appendChild(text);
text.appendChild(itemText);
itemdiv.appendChild(buttons);
buttons.appendChild(complete);
buttons.appendChild(remove);
remove.innerHTML = 'Remove';
complete.innerHTML = 'Complete';
remove.classList.add('remove');
remove.setAttribute('id','remove');
complete.classList.add('complete');
complete.setAttribute('id','complete');
buttons.classList.add('buttondiv');
text.classList.add('text');
itemdiv.classList.add('itemdiv');
remove.addEventListener('click', removeItem);
complete.addEventListener('click', completeItem);
itemlist.insertBefore(item, itemlist.childNodes[0]);
});
function removeItem() {
var item = this.parentNode.parentNode;
var parent = this.parentNode;
parent.removeChild(item);
};
function completeItem() {
var item = this.parentNode.parentNode;
var parent = this.parentNode;
parent.removeChild(item);
};
我希望删除按钮删除其附加到的列表项。
解决方案
错误在函数中
function completeItem() {
var item = this.parentNode.parentNode;
var parent = this.parentNode;
parent.removeChild(item);
};
交换item
and parent
,如下所示:parent.removeChild(item);
推荐阅读
- java - 缩短冒泡排序循环
- java - 我们在 java 中使用 char[] 处理敏感数据,在 Kotlin 中呢?CharArray 好吗?
- datetime - 在 Hyperledger 中的 DateTime 字段 (ISO-8601) 中仅指定时间
- php - 如何在 Json 数组中获取 Json 对象并将其存储在 MySql 中
- python - 关于使用修饰函数重新绑定名称的问题
- matlab - 从分辨率计算数字/小数位数
- rpm - rmpbuild:在 SOURCE 文件夹的另一个文件夹中进行 tar
- php - 无法在共享主机中安装流明
- node.js - 根据完成的服务器进程显示进度条加载器
- xamarin - Mono.Btls.MonoBtlsException:Ssl 错误:1000007d:SSL 例程:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED Xamarind android ADB2C