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

如何为待办列表项添加创建日期并存储后在网页展示?

待办项添加创建日期的实现建议
  • 修复HTML基础问题
    input输入框的提示属性拼写错误,将placehoder修改为placeholder即可正常显示输入提示文字。
  • 优化待办数据存储结构
    不要直接往todo数组中存储输入框DOM对象,改为存储包含待办内容、创建时间的结构化对象,已有的3条初始待办也补全初始化时间,方便后续统一渲染和管理:
    // 初始待办数据示例,可根据需求调整初始时间
    const todo = [
      { content: 'Item 1', createTime: new Date() },
      { content: 'Item 2', createTime: new Date() },
      { content: 'Item 3', createTime: new Date() }
    ]
    
  • 新增时间格式化工具函数
    将原生Date对象转换为易读的日期时间格式,避免直接输出原始Date对象的冗余内容:
    function formatTime(date) {
      const year = date.getFullYear()
      const month = String(date.getMonth() + 1).padStart(2, '0')
      const day = String(date.getDate()).padStart(2, '0')
      const hour = String(date.getHours()).padStart(2, '0')
      const minute = String(date.getMinutes()).padStart(2, '0')
      return `${year}-${month}-${day} ${hour}:${minute}`
    }
    
  • 修改新增待办逻辑
    点击添加按钮时生成当前时间,渲染列表项时同步展示日期,同时修复原有代码的已知问题(未提前获取按钮元素、存储内容错误、重复id问题):
    const completelist = document.getElementById("thelist");
    const todoButton = document.getElementById("todo-button");
    let counter = 4;
    
    function formatTime(date) {
      const year = date.getFullYear()
      const month = String(date.getMonth() + 1).padStart(2, '0')
      const day = String(date.getDate()).padStart(2, '0')
      const hour = String(date.getHours()).padStart(2, '0')
      const minute = String(date.getMinutes()).padStart(2, '0')
      return `${year}-${month}-${day} ${hour}:${minute}`
    }
    
    // 渲染初始待办的创建时间
    document.querySelectorAll('#thelist .todo').forEach((item, index) => {
      const timeTag = document.createElement('span')
      timeTag.style.cssText = 'margin-left: 12px; color: #999; font-size: 12px;'
      timeTag.textContent = formatTime(todo[index].createTime)
      item.appendChild(timeTag)
    })
    
    todoButton.onclick = function addelement() {
      const userTodoInput = document.getElementById("todoInput");
      const inputVal = userTodoInput.value.trim()
      if(inputVal !== ""){
        const currentTime = new Date()
        // 存入结构化数据
        todo.push({
          content: inputVal,
          createTime: currentTime
        })
        // 渲染带时间的列表项
        const node = document.createElement("LI");
        node.className = 'todo'
        node.id = `todo${counter}`
        node.innerHTML = `${inputVal} <span style="margin-left: 12px; color: #999; font-size: 12px;">${formatTime(currentTime)}</span>`;
        completelist.appendChild(node);
        // 操作提示去掉重复id,增加时间展示
        document.getElementById("mydiv").innerHTML += `<div class='todo'><p> You have added this to the list of actions: ${inputVal},创建时间:${formatTime(currentTime)}</p><br></div>`;
        // 清空输入框方便下次输入
        userTodoInput.value = ''
      } else {
        alert("Enter something in textarea")
      }
      counter++;
    }
    
  • 可选优化
    如果需要刷新页面后数据不丢失,可以把todo数组转成JSON字符串存储在localStorage中,页面初始化时再读取解析即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:45:01