javascript - 如何将任务添加到当前方法?

标签 javascript

我正在尝试做一个类似于谷歌日历的网络应用程序。我已经完成了其中的对象和方法,但现在是时候能够添加我想要的任务了。我的想法是让用户向输入添加一些内容,并且该输入现在是 console.logged。

有什么想法吗?

HTML

<div class="new-task" id="task-input">
    <div id="add-new-task">Task: <input type="text"></div>
    <div id="add-time">Time: <input type="text"></div>
    <button class ="save-task" onclick="">Save task</button>
</div>

Javascript

var idCounter = 0
var tasksManager = {
    array: [],
    add: function(task){

        taskObject = {
            title: task,
            idVerification: idCounter ++
        }
        tasksManager.array.push(taskObject)
    },
    show:function(id){
        var i;
        for (i = 0; i < tasksManager.array.length; i++) {
           if(id === tasksManager.array[i].idVerification){
            return tasksManager.array[i]
           }
        }
    },
    delete:function(task){
       if(this.show){
       tasksManager.array.splice(task)
       }
    }

}

var newTask = document.getElementById("add-new-task")
newTask.addEventListener('click',tasksManager.add())

console.log(tasksManager.array)

正如您在上面的 console.log 中看到的,数组索引 [0] 被记录为未定义,但我希望用户在输入中写入“去健身房”,并将其记录在数组中。

谢谢

最佳答案

一些问题:

  1. 您没有分配点击处理程序。相反,您立即执行它(而不是单击时)。

  2. 当您调用 .add() 时,您不提供参数:任务名称

  3. 点击处理程序应位于按钮元素上,而不是位于具有 input 元素的 div 上。因此,为该按钮提供 id 属性会很有用。

  4. 您应该从 input 元素中检索值,因此为 that 元素提供一个 id 会更合适而不是包装它的 div

  5. 脚本末尾的 console.log 会立即执行。仅当用户单击按钮时才应执行此操作。

带有一些更正的代码片段(也在 HTML 中!):

var idCounter = 0
var tasksManager = {
    array: [],
    add: function(task){

        let taskObject = {
            title: task,
            idVerification: idCounter ++
        }
        tasksManager.array.push(taskObject)
    },
    show:function(id){
        var i;
        for (i = 0; i < tasksManager.array.length; i++) {
           if(id === tasksManager.array[i].idVerification){
            return tasksManager.array[i]
           }
        }
    },
    delete:function(task){
       if(this.show){
       tasksManager.array.splice(task)
       }
    }

}

var button = document.getElementById("save-task"); // <-- the button
var input = document.getElementById("add-new-task"); // <-- the input (move the ID attribute to the input!)
button.addEventListener('click', () => {
    tasksManager.add(input.value);
    console.log(tasksManager.array)
})
<div class="new-task" id="task-input">
    <div >Task: <input id="add-new-task" type="text"></div>
    <div id="add-time">Time: <input type="text"></div>
    <button class ="save-task" id ="save-task" onclick="">Save task</button>
</div>

关于javascript - 如何将任务添加到当前方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59124496/

相关文章:

javascript - 使用 javascript onClick 启动/停止声音

javascript - Oembed 不呈现 javascript,仅用于 Twitter 的文本

javascript - 如何在没有收到 "Page Unresponsive"警告的情况下从 javascript 显示打印对话框?

javascript - 如何在 w2ui 中获得不带 -none- 选项的列表?

javascript - 如何从 d3js 图中的 y 轴刻度中删除小数点

javascript - 在 div 中按类名 Toggle() 一个元素

javascript - 循环进度条未停在所需的百分比

javascript - 如何触发 Chrome 扩展,URL 中给定哈希的内容脚本?

javascript - 使用捕获组 $1 访问对象的键值

javascript - .准备加载到html中