gpt4 book ai didi

javascript - 显示 JS ToDo 列表中有多少已完成的任务 VS 有多少任务

转载 作者:行者123 更新时间:2023-11-28 00:54:17 24 4
gpt4 key购买 nike

所以我一直在使用 HTML、JS 和 CSS 制作一个非常简单的 ToDo 列表,唯一剩下的就是向用户显示有多少任务以及完成了多少任务。例如。如果总共有3个完成的和7个任务,它应该输出3/7。我一直在尝试使用一些事件监听器和其他东西来执行此操作,但无法使其正常工作...我如何使用 HTML 和 JS 中的 ouput 元素来执行此操作?

var button = document.getElementById('button')
var ul = document.getElementById('todo')
var output = document.getElementsByName('result')


button.addEventListener("click", addTask);
button.addEventListener("click", function(event) {
event.preventDefault()
})

function addTask() {
var checkbox = document.createElement("INPUT")
checkbox.setAttribute("type", "checkbox");
var label = document.createElement("LABEL");
var li = document.createElement("LI");
var task = document.createTextNode(document.getElementById('task').value);
label.appendChild(task)
li.appendChild(label)
li.insertBefore(checkbox, li.childNodes[0])
ul.appendChild(li)

var date = new Date()
tasks.push({
text: document.getElementById('task').value,
date: date
})
}

var tasks = []
console.log(tasks)
#todo {
list-style-type: none;
margin-left: 0;
padding-left: 0;
}

input[type=checkbox]:checked + label {
text-decoration: line-through;
}
<!doctype html>
<html>

<head>
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
</head>

<body>

<header>
<h1>To-do list</h1>
</header>

<form class="" action="" method="">
<input type="submit" name="button" value="Add task" id="button">
<input type="text" name="input" id="task" autofocus>
<output name="result"></output>
<ul id="todo"></ul>
</form>

<script type="text/javascript" src="todo.js"></script>

</body>

</html>

最佳答案

此方法添加了两个元素来显示已完成的待办事项和总数。同样,将事件 change 绑定(bind)到每个新创建的复选框以在用户单击它们时捕获它们。

var button = document.getElementById('button')
var ul = document.getElementById('todo')
var output = document.getElementsByName('result')
var total = document.getElementById('total')
var completed = document.getElementById('completed')

button.addEventListener("click", addTask);
button.addEventListener("click", function(event) {
event.preventDefault();
});

function addTask() {
var checkbox = document.createElement("INPUT");
checkbox.setAttribute("type", "checkbox");

// Add one more todo in total count.
total.textContent = +total.textContent + 1;

//Thrigger the completed event
checkbox.addEventListener("change", function(event) {
if (this.checked) completed.textContent = +completed.textContent + 1;
else completed.textContent = +completed.textContent - 1;
});

var label = document.createElement("LABEL");
var li = document.createElement("LI");
var task = document.createTextNode(document.getElementById('task').value);
label.appendChild(task)
li.appendChild(label)
li.insertBefore(checkbox, li.childNodes[0])
ul.appendChild(li)

var date = new Date()
tasks.push({
text: document.getElementById('task').value,
date: date
});
}

var tasks = []
console.log(tasks)
#todo {
list-style-type: none;
margin-left: 0;
padding-left: 0;
}

input[type=checkbox]:checked+label {
text-decoration: line-through;
}
<!doctype html>
<html>

<head>
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
</head>

<body>

<header>
<h1>To-do list</h1>
</header>

<form class="" action="" method="">
<input type="submit" name="button" value="Add task" id="button">
<input type="text" name="input" id="task" autofocus>
<output name="result"></output>
<p>My completed todos: <span id='completed'>0</span> / <span id='total'>0</span> </p>
<ul id="todo"></ul>
</form>

<script type="text/javascript" src="todo.js"></script>

</body>

</html>

关于javascript - 显示 JS ToDo 列表中有多少已完成的任务 VS 有多少任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53033177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com