todolist正在进行个数和已完成个数-70

简介: todolist正在进行个数和已完成个数-70

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>todoList待办事项</title>
    <script src="./js/jquery.min.js"></script>
</head>
<body>
    <header>
        <section>
            <label for="title">ToDoList</label>
            <input type="text" id="title" placeholder="添加ToDo">
        </section>
    </header>
    <section>
        <h2>正在进行<span id="todocount"></span></h2>
        <ol id="todolist" class="demo-box">
        </ol>
        <h2>已经完成<span id="donecount"></span></h2>
        <ul id="donelist">
        </ul>
    </section>
    <footer>
        Copyright &copy;2014 todolist.cn
    </footer>
    <script>
        var todolist = [{
            title: '我今天吃了八个馒头',
            done: false
        }, {
            title: '我今天学习jq',
            done: false
        }, ];
        localStorage.setItem("todo", JSON.stringify(todolist));
        //本地的数组转换为json.stringfy();
        var data = localStorage.getItem("todo");
        console.log(typeof data);
        //获取本地存储数据需要把字符串数据转换为对象形式json.parse
        data = JSON.parse(data);
        console.log(data);
        $(function() {
            //todolist渲染到界面
            load();
            //按下回车 把完整数据存储到本地存储里面
            $("#title").on("keydown", function(event) {
                if (event.keyCode === 13) {
                    if ($(this).val() === "") {
                        alert("请输入数值");
                    } else {
                        //先读取本地存储原来的数据
                        var local = getDate();
                        console.log(local);
                        //把local数组更新元素
                        local.push({
                            title: $(this).val(),
                            done: false
                        });
                        //把这个数组给本地存储
                        saveDate(local);
                        //todolist渲染到界面
                        load();
                        $(this).val("");
                    }
                }
            });
            //todolist删除事件
            $("ol,ul").on("click", "a", function() {
                //获取本地存储
                var data = getDate();
                console.log(data);
                //修改数据
                var index = $(this).attr("id");
                console.log(index);
                //保存到本地存储
                data.splice(index, 1);
                //渲染
                saveDate(data);
                load();
            });
            //正在进行和已完成
            $("ol,ul").on("click", "input", function() {
                    //获取本地存储的数据
                    var data = getDate();
                    //修改数据
                    var index = $(this).siblings("a").attr("id");
                    //
                    data[index].done = $(this).prop("checked");
                    // console.log(data);
                    //保存到本地存储
                    saveDate(data);
                    //渲染
                    load();
                })
                //读取本地存储的数据
            function getDate() {
                var data = localStorage.getItem("todolist");
                if (data !== null) {
                    //本地存储里面的数据是字符串格式的
                    return JSON.parse(data);
                } else {
                    //返回一个数组
                    return [];
                }
            }
            //保存数据
            function saveDate(data) {
                localStorage.setItem("todolist", JSON.stringify(data));
            }
            //渲染数据
            function load() {
                //读取本地的数据
                var data = getDate(data);
                console.log(data);
                //遍历之前清空
                $("ol,ul").empty();
                var todoCount = 0; //正在进行的个数
                var doneCount = 0; //已经完成的个数
                //遍历整个数据
                $.each(data, function(i, n) {
                    //console.log(n);
                    if (n.done) {
                        $("ul").prepend("<li><input type='checkbox' checked='checked'><p>" + n.title +
                            "</p><a href='javascript:;' id=" + i + ">删除</a></li>");
                        doneCount++;
                    } else {
                        $("ol").prepend("<li><input type='checkbox'><p>" + n.title +
                            "</p><a href='javascript:;' id=" + i + ">删除</a></li>");
                        todoCount++;
                    }
                    $("#todocount").text(todoCount);
                    $("#donecount").text(doneCount);
                })
            }
        });
    </script>
</body>
</html>

image.png

相关文章
|
缓存 监控 数据挖掘
C# 一分钟浅谈:性能测试与压力测试
【10月更文挑战第20天】本文介绍了性能测试和压力测试的基础概念、目的、方法及常见问题与解决策略。性能测试关注系统在正常条件下的响应时间和资源利用率,而压力测试则在超出正常条件的情况下测试系统的极限和潜在瓶颈。文章通过具体的C#代码示例,详细探讨了忽视预热阶段、不合理测试数据和缺乏详细监控等常见问题及其解决方案,并提供了如何避免这些问题的建议。
289 7
|
前端开发 小程序 Java
|
机器学习/深度学习 达摩院 数据建模
ICML 2023 | 基于模块化思想,阿里达摩院提出多模态基础模型mPLUG-2
ICML 2023 | 基于模块化思想,阿里达摩院提出多模态基础模型mPLUG-2
500 0
|
设计模式 对象存储 Python
【flask高级】从源码深入理解flask的应用上下文和请求上下文
之前在flask入门系列中大概写了flask的应用上下文和请求上下文,比较浅显,但我们后面要了解flask的运行机制,就必须先深入了解一下flask中的应用上下文和请求上下文,这节阿牛将继续带你从源码来剖解他的奥秘!
302 0
【flask高级】从源码深入理解flask的应用上下文和请求上下文
|
SQL 关系型数据库 MySQL
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
2091 0
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
|
NoSQL Redis
redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value
错误原因:     因为redis中已经存在了相同的key, 而且key对应的值类型并不是Set,而是SortSet(改动前);再调用smembers时,抛出此错误。 解决方法:     将原来的的key给Del掉,再从新执行代码,没有问题。
3760 0
|
Android开发 异构计算
Android PRODUCT_COPY_FILES 自动拷贝文件
/********************************************************************** * Android PRODUCT_COPY_FILES 自动拷贝文件 * 说明: * 本文主要记录如何向Android系统中自动添加自己的文件,主要是考虑到 * 后续需要添加一些自动化脚本,不可能每次都自己手动去添加。
2680 0
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。