功能实现:
- 1.在顶部输入内容,添加到正在进行列表;
- 2.点击前面复选框正在进行的项目添加到已经完成里面,同时数量增加减少
- 3.点击右边删除按钮可以删除项目;
- 4.关闭窗口,下次进入页面载入之前的项目列表.
用到的知识:
- 1.html+css样式
- 2.jQuery及cookie
效果图:
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
li{
list-style: none;
}
section{
margin: 100px auto;
width: 400px;
min-height: 50px;
border: 1px solid;
}
dt{
background-color: #313131;
height: 35px;
line-height: 35px;
color: #fff;
}
dt h3{
float: left;
font-weight: normal;
margin-left: 5px;
}
dt p{
float: right;
margin-right: 5px;
}
dt p input{
width: 200px;
height: 20px;
border-radius: 5px;
border: 0;
outline: 0;
}
dd .title{
background-color: #cdcdcd;
height: 35px;
line-height: 35px;
cursor: pointer;
padding-left: 10px;
}
dd .title h4{
float: left;
}
dd .title span{
float: right;
margin-right: 10px;
margin-top: 5px;
display: block;
background-color: #e6e6fb;
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
border-radius: 50%;
}
ul{
background-color: #cdcdcd;
}
.content li{
height: 25px;
width: 400px;
padding: 5px 0;
}
.content-main{
background-color: #fff;
margin: 0 10px 0;
height: 100%;
line-height: 25px;
border-radius: 5px;
}
.left{
float: left;
}
.content-main .left i{
float: left;
display: inline-block;
width: 5px;
height: 25px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
background-color: #609a9d;
}
.content-main .left input{
float: left;
margin: 6px 10px 0;
}
.content-main .left span{
float: left;
font-size: 12px;
}
.right{
float: right;
}
.right em{
display: block;
margin-top: 5px;
margin-right: 5px;
width: 15px;
height: 15px;
border-radius: 50%;
background-color: #cccccc;
text-align: center;
line-height: 15px;
padding-right:3px ;
color: #fff;
font-weight: bold;
cursor: pointer;
}
#complete-content .content-main{
background-color: #e6e6e6;
}
</style>
</head>
<body>
<section>
<dl>
<dt>
<h3>ToDoList</h3>
<p><input type="text" placeholder="添加ToDo" id="addList"></p>
</dt>
<dd>
<div class="title"><h4>正在进行</h4><span id="going-num">0</span></div>
<div class="content" id="going-content">
<ul>
<!-- <li class="content-list"><div class="content-main">
<div class="left"><i></i><input type="checkbox" class="going-content-input"><span>今天我要学习jQuery</span>
</div>
<div class="right"><em id="del">-</em></div>
</div></li> -->
</ul>
</div>
</dd>
<dd>
<div class="title"><h4>已经完成</h4><span id="complete-num">0</span></div>
<div class="content" id="complete-content">
<ul></ul>
</div>
</dd>
</dl>
</section>
</body>
</html>
<script src="jQuery.js"></script>
<script src="jquery.cookie-1.4.1.min.js"></script>
<script>
$(function(){
let going_num = 0;
let complete_num = 0;
if($.cookie("going")){
let arrGoing = $.cookie("going").split(";");
going_num = arrGoing.length;
$("#going-num").text(going_num);
$.each(arrGoing,function(i,val){
$("#going-content ul").append(`<li class="content-list"><div class="content-main">
<div class="left"><i></i><input type="checkbox" class="going-content-input"><span>${val}</span>
</div>
<div class="right"><em id="del">-</em></div>
</div></li>`);
});
}
if($.cookie("complete")){
let arrComplete = $.cookie("complete").split(";");
complete_num = arrComplete.length;
$("#complete-num").text(complete_num);
$.each(arrComplete,function(i,val){
$("#complete-content ul").append(`<li class="content-list"><div class="content-main">
<div class="left"><i></i><input type="checkbox" class="going-content-input" checked="checked"><span>${val}</span>
</div>
<div class="right"><em id="del">-</em></div>
</div></li>`);
});
}
$.removeCookie("going");
$.removeCookie("complete");
$("#addList").keydown(function (e) {
if (e.keyCode == 13 && $(this).val() != "") {
$("#going-content ul").append(`<li class="content-list"><div class="content-main">
<div class="left"><i></i><input type="checkbox" class="going-content-input"><span>${$("#addList").val()}</span>
</div>
<div class="right"><em id="del">-</em></div>
</div></li>`);
going_num++;
$("#going-num").text(going_num);
$(this).val("");
}
dodo();
});
dodo();
function dodo(){
$("#going-content .going-content-input").off().click(function () {
let oLi = $(this).parent().parent().parent().html();
console.log(oLi);
$("#complete-content ul").append(`
<li class="content-list">${oLi}</li>
`);
$("#complete-content .going-content-input").attr("checked", true);
complete_num++;
$("#complete-num").text(complete_num);
going_num--;
$("#going-num").text(going_num);
$(this).parents(".content-list").remove();
del();
});
$("#going-content #del").off().click(function () {
going_num--;
$("#going-num").text(going_num);
$(this).parents(".content-list").remove();
});
del();
}
function del(){
$("#complete-content #del").off().click(function () {
complete_num--;
$("#complete-num").text(complete_num);
$(this).parents(".content-list").remove();
});
}
window.onbeforeunload = function(){
$("#going-content ul li").each(function(i,ele){
if($.cookie("going")){
$.cookie("going",$.cookie("going") + ";" + $(ele).find(".content-main").find(".left").find("span").text(),{expires:7});
}else{
$.cookie("going",$(ele).find(".content-main").find(".left").find("span").text(),{expires:7});
}
});
$("#complete-content ul li").each(function(i,ele){
if($.cookie("complete")){
$.cookie("complete",$.cookie("complete") + ";" + $(ele).find(".content-main").find(".left").find("span").text(),{expires:7});
}else{
$.cookie("complete",$(ele).find(".content-main").find(".left").find("span").text(),{expires:7});
}
});
}
});
</script>