DAY11 - [JS] 经典的ToDoList

今日文章目录

  • ToDoList 需求
  • 事前准备
  • 参考资料

ToDoList 需求

Q: 需要有哪些功能?

1.使用者输入框 与 加入按钮
2.点击完成按钮,显示该笔资料删除样式


事前准备

  • HTML 架构:
<section class="container">
  <h1 class="title">To Do List Challenge</h1>
  <input id="inputValue" placeholder="请输入代办事项..."/>
  <button onclick="handleAddToList()">ADD TO LIST</button>
  <ol class="toDoList">
    
    <!-- 这里就是等等要加入清单项目的位置 -->
    
  </ol>
</section>
  • CSS重点样式:点击完成钮,显示的删除样式。
    .deleteStyle{
      text-decoration: line-through;
      color: gray;
      background-color: #80808034;
    }

步骤说明

  1. 取得DOM节点:输入框、加入按钮、清单
    • querySelector(CSS Selector) : 选取文件内第一个符合class名为addBtn的 element node.
      (选取写法跟CSS 选取器一样)。
    • getElementById(id name) : id唯一值,这里已经清楚写getElementById,直接写入id名称即可。
        const addBtn = document.querySelector(".addBtn");
        const toDoList = document.querySelector(".toDoList");
        const currentValue = document.getElementById("inputValue");
    
  2. 监听加入按钮,当点击按钮,执行以下动作:
    • addEventListener("监听动作", 执行function)
        addBtn.addEventListener("click", handleAddToList);
    
  3. 确认输入框是否有值
  4. 有值:新增 元素节点 -> 加入内容 -> 将节点挂载到清单上
    • 对应:createElement() -> innerHTML -> append()
        if(currentValue.value){
          const newElement = document.createElement('li'); // Build a new element
          newElement.innerHTML=`
            ${currentValue.value}
             <button class="deleteBtn">Done</button>
          `;
          toDoList.append(newElement);
    
          ...
        }
    
  5. 对刚新增的完成按钮加入监听
    • 当点击完成钮,加入CSS删除样式 (重复点击可以取消)
    • 这里使用classList.toggle("deleteStyle"),对应到刚刚提到的CSS样式。
    • toggle(): 切换样式。如果原本有,移除样式;如果原本没有,加入样式。
      const deleteBtn = newElement.querySelector(".deleteBtn");
      deleteBtn.addEventListener("click", ()=> {
          newElement.classList.toggle("deleteStyle")
      })
    

参考资料


明日预告:


<<:  [自然语言处理基础] Regular Expression (II): 文本清理

>>:  少不了 Nginx 反向代理和 SSL

Day 29 BERT

BERT 全名为 Bidirectional Encoder Representations Fro...

Day 17 - 卷积神经网络 CNN (2)- 战国时代之版图扩张

再看一次... 注:成功大学 连震杰教授 百家争鸣 我们了解在1998 LeNet / 2012 A...

Day23 订单金流 -- 状态异动

在订单成立以及建立金流部份,因为情境非常多, 因此在制定状态的部份其实也是有很多可以讨论的, 还记得...

[ Day 14 ] - 存取网页元素之变更指定内容

上一篇提到可以取得指定的 DOM 节点 今日来介绍可如何透过节点存取及变更文件节点 textCont...

Day20 - [丰收款] 以Django Web框架实作永丰API线上支付模拟情境(1)

我们的丰收款主题完结了吗? 今天即使达成铁人赛的2/3赛程,在先前的篇幅已完整将每一个功能都实作出来...