javascript - 包含数组和函数的待办事项列表

标签 javascript arrays

我想创建一个带有数组的待办事项列表,函数和js必须与HTML分开。 HTML 部分很好,但我在完成功能时遇到了麻烦。 EventListener 也可以工作。

<小时/>
<form id="todoForm">
  <input id="todoInput" type="text">
  <button type="button" id="button">Add your To Do</button> 
</form>
<ol id="toDoList"></ol>

我们有数组“todos”,注意到按钮单击,并且调用函数“addTodo”,该函数(我希望如此)将输入推送到数组中。 我不知道如何调用 next 函数,该函数应该将数组项创建为 li 元素,这就是我需要帮助的地方。函数“printTodos”中的内容是垃圾。

 var todos = [];

    document.getElementById('button').addEventListener('click', function 
    addTodo () {
    todos.push('input')  

    function printTodos () {
        var item = document.createElement("li");
        var node = createTextNode(input);
        // I am stuck 
    }
  });

最佳答案

您已经非常接近了,只是您不想创建 addTodoprintTodos click 内的函数事件监听器。

您可以做的是在其外部定义两个函数,然后在单击事件监听器内调用它们,如下所示:

var todos = [];

function addTodo() {
    var inputValue = document.getElementById('todoInput').value;
    todos.push(inputValue);
}

function printTodos() {
    var list = document.getElementById('toDoList');
    list.innerHTML = ''; //Reset the list content whenever we print the todos, so we don't end up with duplicate todo items.

    for (var i = 0; i < todos.length; i++) {
        var li = document.createElement('li');
        var listItem = li.appendChild(document.createTextNode(todos[i]));
        list.appendChild(listItem);
    }
}

document.getElementById('click', function() {
    addTodo();
    printTodos();
});

我们在这里所做的是,在addTodo中函数中,我们以编程方式获取输入到 todoInput 中的文本并将其添加到数组中。然后,在 printTodos函数中,我们循环所有输入的待办事项并创建 <li>元素填充待办事项文本。最后,我们将新列表项附加到 toDosList .

关于javascript - 包含数组和函数的待办事项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52603796/

相关文章:

php - 将平面数组转换为按类别分组的数组

javascript - 这段代码如何知道返回字符串中最长单词的长度?

arrays - 用整数 1 或 2 填充固定大小的数组以求和 X

javascript - 如何在自身内部使用变量

Javascript如何获取字符串的前三个字符

c++ - 将结构和结构成员传递给函数

java - 当我打印一个字符串值来控制台时,它会打印,但是当我尝试将此字符串放入双字符串数组时,它返回空

javascript - 在两个 meteor 模板之间推送数据

javascript - 如何控制复选框 "checked"值与未知数量的复选框

javascript - 有没有办法使 HTML 页面上的文本无法选择?