网页版备忘录简易实现

Posted 春风~十一载

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网页版备忘录简易实现相关的知识,希望对你有一定的参考价值。

🍏 预览效果




🍏 步骤分解及代码

1. 创建页面布局

 <!-- 最上面一行, 输入框 + 新建任务按钮 -->
      <div class="nav">
        <input type="text">
        <button>新建任务</button>
    </div>
 
    <!-- 下面包含了左右两个部分的内容区域 -->
    <div class="container">
        <!-- 左侧的部分 -->
        <div class="todo">
            <h3>未完成</h3>
            <!-- 这只是一个实例, 实际上内容都得是动态构造出来的 -->
            <!-- <div class="row">
                <input type="checkbox">
                <span>吃饭</span>
                <button>删除</button>
            </div> -->
        </div>
        <!-- 右侧的部分 -->
        <div class="done">
            <h3>已完成</h3>
        </div>
    </div>

2. 实现页面样式

 <style>
        * 
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        
 
        .nav 
            width: 800px;
            height: 100px;
            margin: 0 auto;
            display: flex;
            align-items: center;
        
 
        /* 任务的输入框 */
        .nav input 
            height: 50px;
            width: 600px;
        
 
        .nav button 
            height: 50px;
            width: 200px;
            background-color: orange;
            color: white;
            /* 去掉按钮周围的边框. button 元素默认会带 2 个像素的黑色实线边框 */
            border: none;
        
 
        .container 
            width: 800px;
            height: 800px;
            margin: 0 auto;
            display: flex;
        
 
        .container h3 
            height: 50px;
            text-align: center;
            line-height: 50px;
            background-color: #333;
            color: #fff;
        
 
        .todo 
            width: 50%;
            height: 100%;
        
 
        .done 
            width: 50%;
            height: 100%;
        
 
        .row 
            height: 50px;
            display: flex;
            align-items: center;
        
 
        .row input 
            /* 设置上下外边距为 0, 设置左右外边距为 10px */
            margin: 0 10px;
        
 
        .row span 
            width: 300px;
        
 
        .row button 
            width: 50px;
            height: 40px;
        
    </style>

3. 实现页面行为

注意,此时我们用到了javascript,相关步骤如下:

  1. 实现新建任务功能:获取到新增按钮->给新增按钮注册一个点击事件->获取到输入框的内容->根据任务内容创建元素->把相应元素挂到 DOM 树上->清空输入框
  2. 实现 “已完成功能”, 针对 checkbox 新增一个点击事件处理函数
  3. 实现 “删除” 功能,针对删除按钮增加一个点击事件
<script>
        // 1. 实现新建任务功能
        // 1.1 获取到新增按钮
        let addTaskButton = document.querySelector('.nav button');
        // 1.2 给新增按钮注册一个点击事件
        addTaskButton.onclick = function() 
            // 1.3 获取到输入框的内容
            let input = document.querySelector('.nav input');
            let taskContent = input.value;
            if (taskContent == '') 
                console.log('当前任务为空, 不能进行新增任务!');
                return;
            
            // 1.4 根据任务内容, 创建元素
            let row = document.createElement('div');
            row.className = 'row';
            let checkbox = document.createElement('input');
            checkbox.type = 'checkbox';
            let span = document.createElement('span');
            span.innerhtml = taskContent;
            let button = document.createElement('button');
            button.innerHTML = '删除';
            // 1.5 把这些元素挂到 DOM 树上
            row.appendChild(checkbox);
            row.appendChild(span);
            row.appendChild(button);
            let todo = document.querySelector('.todo');
            todo.appendChild(row);
            // 1.6 清空输入框
            input.value = '';
 
            // 2. 实现 "已完成功能". 针对 checkbox 新增一个点击事件处理函数
            checkbox.onclick = function() 
                // 操作 row 这个对象, 看是把 row 是放到 todo 还是放到 done 里~
                // 根据 checkbox 的选中状态来判定
                if (checkbox.checked) 
                    // 选中状态, 把 row 放到 done 里
                    let target = document.querySelector('.done');
                    target.appendChild(row);
                 else 
                    // 未选中状态, 把 row 放到 todo 里
                    let target = document.querySelector('.todo');
                    target.appendChild(row);
                
            
 
            // 3. 实现 "删除" 功能, 针对删除按钮增加一个点击事件. 
            button.onclick = function() 
                // 在这里, 要删除的是 row 这个元素 (child => row)
                // row 的 parent 可能是 todo, 也可能是 done
                // 可以直接通过 parentNode 属性获取到某个元素的父元素是谁. 
                let parent = row.parentNode;
                parent.removeChild(row);
            
        
    </script>

以上是关于网页版备忘录简易实现的主要内容,如果未能解决你的问题,请参考以下文章

UniApp版简易备忘录来了~

UniApp版简易备忘录来了~

什么都学一点系列之鸿蒙开发Java版简易备忘录

什么都学一点系列之鸿蒙开发Java版简易备忘录

什么都学一点系列之鸿蒙开发Java版简易备忘录

简易中控紫猫插件版