You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript的OOP方法创建DOM节点?客户端待办列表实践问询

用OOP方式实现纯客户端待办事项列表

嘿,我来帮你搞定用OOP方法实现这个待办事项列表~咱们一步步来,把逻辑封装成类,既清晰又方便后续扩展功能。

第一步:调整HTML结构

首先咱们把内联的onclick去掉,换成更符合现代JS实践的事件监听,这样逻辑和结构能更好地分离:

<body>
  <button type="button" id="addItemBtn">Add New Item</button>
  <div id="todolist" class="todolistBody">
    <!-- 动态生成的待办项会插入到这里 -->
  </div>
</body>

第二步:创建TodoList类

咱们把所有和待办列表相关的逻辑都封装到TodoList类里,包括初始化元素、绑定事件、添加新项这些操作:

class TodoList {
  constructor() {
    // 获取DOM元素,把它们作为类的属性保存
    this.addBtn = document.getElementById('addItemBtn');
    this.todoContainer = document.getElementById('todolist');
    
    // 绑定点击事件,注意要绑定this指向,不然方法里的this会指向按钮元素
    this.addBtn.addEventListener('click', this.addNewItem.bind(this));
  }

  addNewItem() {
    // 创建待办项的DOM结构,这里我给你写个基础示例,你可以根据需求调整
    const todoItem = document.createElement('div');
    todoItem.className = 'todo-item';
    
    // 添加子元素:复选框、文本输入框、删除按钮
    const checkbox = document.createElement('input');
    checkbox.type = 'checkbox';
    
    const textInput = document.createElement('input');
    textInput.type = 'text';
    textInput.placeholder = '输入待办内容...';
    
    const deleteBtn = document.createElement('button');
    deleteBtn.textContent = '删除';
    deleteBtn.addEventListener('click', () => this.deleteItem(todoItem));
    
    // 把子元素添加到待办项容器里
    todoItem.appendChild(checkbox);
    todoItem.appendChild(textInput);
    todoItem.appendChild(deleteBtn);
    
    // 把新的待办项插入到页面的待办列表容器中
    this.todoContainer.appendChild(todoItem);
  }

  // 额外加个删除方法,方便后续扩展
  deleteItem(item) {
    this.todoContainer.removeChild(item);
  }
}

// 页面加载完成后初始化TodoList实例
document.addEventListener('DOMContentLoaded', () => {
  new TodoList();
});

为什么用OOP?

  • 封装性:所有和待办列表相关的逻辑都集中在一个类里,以后找问题或者加功能(比如标记完成、本地存储)都很方便
  • 可复用性:如果以后页面需要多个待办列表,直接new多个TodoList实例就行
  • 可读性:类的方法名(比如addNewItem、deleteItem)一看就知道是干啥的,代码逻辑更清晰

你可以根据自己的需求修改addNewItem里的DOM结构,比如换成标签、调整样式类名之类的,完全没问题~

内容的提问来源于stack exchange,提问作者user2957592

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:52:58