正在尝试创建具有删除功能的待办事项列表
Trying to create a todo list with delete function
我是javascript和编码的新手,我正在尝试制作一个简单的待办事项列表,但无法使用删除按钮删除所有复选框,它只会删除第一个复选框。谢谢大家。
http://jsfiddle.net/fbct3oL7/1/
function taskadd() {
taskNew = new objectTask();
}
function objectTask() {
var task = document.getElementById('textinput').value;
var listItem = document.createElement("li");
listItem.id = task;
var itemText = document.createTextNode(task);
listItem.appendChild(itemText);
var checkbox = document.createElement("input")
checkbox.type = "checkbox";
checkbox.name = task;
checkbox.id = "checkbox";
document.getElementById('place').appendChild(listItem);
document.getElementById(task).insertBefore(checkbox, listItem.firstChild);
}
function deleteCheckBox() {
while (document.getElementById('checkbox').checked === true) {
var itemNode = document.getElementById(checkbox.name);
itemNode.parentNode.removeChild(itemNode);
}
}
我已经修改了您的代码,消除了不必要的id
和name
属性,并更新了deleteCheckBox
函数以循环使用ul
中的所有li
。
function taskadd() {
taskNew = new objectTask();
}
function objectTask() {
var task = document.getElementById('textinput').value;
var listItem = document.createElement("li");
var checkbox = document.createElement("input")
checkbox.type = "checkbox";
listItem.appendChild(checkbox);
var itemText = document.createTextNode(task);
listItem.appendChild(itemText);
document.getElementById('place').appendChild(listItem);
}
function deleteCheckBox() {
var ul = document.getElementById('place');
var li = ul.children;
for (var i=0; i < li.length; i++) {
while(li[i] && li[i].children[0].checked) {
ul.removeChild(li[i]);
}
}
}
<div id="list">
<input type='text' id='textinput' />
<input type='button' onclick='taskadd()' value='Add to list' />
<input type='button' onclick="deleteCheckBox()" value='Delete' />
<ul id="place"></ul>
</div>
我还分叉并更新了你的Fiddle:http://jsfiddle.net/JohnnyEstilles/gtpdLkLq/.
您为每个复选框提供相同的id,而getElementById方法只返回第一个匹配的元素。
如果你想获得所有的复选框并删除选中的复选框,你可以这样做(请注意,此代码是自由编写的,未经测试)
var inputs = document.getElementsByTagName("input");
for(i=o; i < inputs.length; i++){
if(inputs[i].type == "checkbox" && inputs[i].checked){
inputs[i].parentNode.removeChild(inputs[i]);
}
}
首先获取标记为"input"的所有元素,然后检查它们是否为复选框类型并已选中。
相关文章:
- 简化了点击功能的长列表
- 如何创建一个脚本,该脚本给定网站列表,它使用其搜索功能来获取信息
- 好友列表功能
- 谷歌类功能的猜测列表
- 更改选择选项下拉列表与onclick功能按钮
- 在选择某些项目时显示文本和列表的功能
- 如何在输入下从数据列表中选择一个选项后立即触发功能
- 如何在WinJS中为列表视图创建排序功能
- 如何在Spring MVC中实现无序列表的展开/折叠功能
- Javascript - 更快的功能:线性列表搜索或获取对象值
- 项目点击和收听事件功能 煎茶触摸 2 列表
- Google Place 自动完成功能会在下拉列表中的结果(预测)中显示“street_number”,但不会在 .ge
- 我的播放器播放列表删除功能不起作用
- “功能上”生成一个仅包含几个元素的列表
- 以角度添加到列表功能
- 在引导程序 3 按钮下拉列表中添加滑动功能时出现问题
- 使用Pusher/Pubnub创建好友列表功能
- 如何使用windows phone 8 c#中的jQuery列表功能
- 移动列表功能无法正常工作
- 我怎样才能得到一个按"减少"的降序排序的映射/减少结果;值";价值如果也使用列表功能可以实