<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<meta http-equiv="X-UA-Compatible" content="ie=edge"> | |
<script src="jquery-3.4.1.min.js"></script> | |
<title>代办事项</title> | |
<style> | |
span { | |
font-size: 14px; | |
margin-right: 10px; | |
color: blue; | |
text-decoration: underline; | |
cursor: pointer; | |
} | |
.total { | |
color: black; | |
text-decoration: none; | |
cursor: text; | |
} | |
.completed { | |
color: red; | |
text-decoration: line-through; | |
} | |
li { | |
cursor: pointer; | |
} | |
</style> | |
</head> | |
<body> | |
<input type="text" name="" id="" placeholder="新的待办事项..."> | |
<button id="btn">添加</button> | |
<ul class="list"></ul> | |
<span class="total">全部</span> | |
<span>已完成</span> | |
<span>未完成</span> | |
<script> | |
let data = [ | |
{ "text": "吃饭", "completed": false }, | |
{ "text": "看书", "completed": true }, | |
{ "text": "看电影", "completed": false }, | |
{ "text": "逛街", "completed": true }, | |
{ "text": "写作业", "completed": false }, | |
]; | |
let str = ""; | |
let render = function (data) { | |
for (let i = 0; i < data.length; i++) { | |
str += `<li class="${data[i].completed ? "completed" : ""}">${data[i].text}</li>`; | |
} | |
$(".list").html(str) | |
str = ""; | |
} | |
render(data); | |
$("#btn").click(function () { | |
let newData = { "text": $(":text").val(), "completed": false }; | |
$(":text").val = ""; | |
data.push(newData); | |
$("span:eq(0)").click(click1); | |
render(data); | |
}); | |
let click1 = function () { | |
$("span").removeClass("total"); | |
let content = $(this).text(); | |
switch (content) { | |
case "全部": | |
$(this).addClass("total"); | |
render(data); | |
break; | |
case "已完成": | |
$(this).addClass("total"); | |
let completed = data.filter(function (list) { | |
return list.completed === true; | |
}); | |
render(completed); | |
break; | |
case "未完成": | |
$(this).addClass("total"); | |
let uncomplete = data.filter(function (list) { | |
return list.completed === false; | |
}); | |
render(uncomplete); | |
break; | |
} | |
} | |
$("span").click(click1); | |
$("ul").on("click", "li", function () { | |
$(this).toggleClass("completed"); | |
let index = $(this).index(); | |
if ($(this).attr("class") == "completed") { | |
data[index].completed = true; | |
} else { | |
data[index].completed = false; | |
} | |
$("ul").html = ""; | |
let content = $(this).text(); | |
switch (content) { | |
case "全部": | |
$(this).addClass("total"); | |
render(data); | |
break; | |
case "已完成": | |
$(this).addClass("total"); | |
let completed = data.filter(function (list) { | |
return list.completed === true; | |
}); | |
render(completed); | |
break; | |
case "未完成": | |
$(this).addClass("total"); | |
let uncomplete = data.filter(function (list) { | |
return list.completed === false; | |
}); | |
render(uncomplete); | |
break; | |
} | |
}); | |
</script> | |
</body> | |
</html> |
原文:https://www.cnblogs.com/tcq43356/p/11570067.html