How to make a JavaScript To-Do list with keydown Function











up vote
1
down vote

favorite












I am attempting to make a JavaScript To-Do list app with an Array, push method, removeChild method, and a keydown function. I want the user to be able to use both the add button and the enter key to enter input. I succeeded in making an app that ultimately has 2 functions with 2 similar sets of variables and DOM methods: one for add button and another for keydown function (when the user hits enter after adding input). This setup seems to work fine. However, I would like to know if it is possible to create a ONE function that facilitates both the Add button AND the keydown function with one set of DOM methods. If so, could someone please provide a potential demo? Thanks!



(The following demo contains Bootstrap classes)



JS:



var array = ;

function add() {
var task = document.getElementById("task").value;
array.push(task);
var text = document.createTextNode(task);
var li = document.createElement("li");
var btn = document.createElement("button");
btn.appendChild(document.createTextNode("x"));
btn.setAttribute("onclick", "remove()");
btn.setAttribute("class", "btn-primary btn-sm newBtn");
li.appendChild(text);
li.appendChild(btn);
document.getElementById("myUl").appendChild(li);
}

function remove() {
var task = this.event.currentTarget.parentNode;
document.getElementById("myUl").removeChild(task);
}

document.getElementById("task").addEventListener("keydown", function(event) {
if (event.which == 13) {
var task2 = document.getElementById("task").value;
array.push(task2);
var text2 = document.createTextNode(task2);
var li2 = document.createElement("li");
var btn2 = document.createElement("button");
btn2.appendChild(document.createTextNode("x"));
btn2.setAttribute("onclick", "remove()");
btn2.setAttribute("class", "btn-primary btn-sm newBtn");
li2.appendChild(text2);
li2.appendChild(btn2);
document.getElementById("myUl").appendChild(li2);
}
});


HTML:



<div class="mainDiv">
<input id="task" class="input-lg">
<button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
</div>
<ul id="myUl"></ul>









share|improve this question


























    up vote
    1
    down vote

    favorite












    I am attempting to make a JavaScript To-Do list app with an Array, push method, removeChild method, and a keydown function. I want the user to be able to use both the add button and the enter key to enter input. I succeeded in making an app that ultimately has 2 functions with 2 similar sets of variables and DOM methods: one for add button and another for keydown function (when the user hits enter after adding input). This setup seems to work fine. However, I would like to know if it is possible to create a ONE function that facilitates both the Add button AND the keydown function with one set of DOM methods. If so, could someone please provide a potential demo? Thanks!



    (The following demo contains Bootstrap classes)



    JS:



    var array = ;

    function add() {
    var task = document.getElementById("task").value;
    array.push(task);
    var text = document.createTextNode(task);
    var li = document.createElement("li");
    var btn = document.createElement("button");
    btn.appendChild(document.createTextNode("x"));
    btn.setAttribute("onclick", "remove()");
    btn.setAttribute("class", "btn-primary btn-sm newBtn");
    li.appendChild(text);
    li.appendChild(btn);
    document.getElementById("myUl").appendChild(li);
    }

    function remove() {
    var task = this.event.currentTarget.parentNode;
    document.getElementById("myUl").removeChild(task);
    }

    document.getElementById("task").addEventListener("keydown", function(event) {
    if (event.which == 13) {
    var task2 = document.getElementById("task").value;
    array.push(task2);
    var text2 = document.createTextNode(task2);
    var li2 = document.createElement("li");
    var btn2 = document.createElement("button");
    btn2.appendChild(document.createTextNode("x"));
    btn2.setAttribute("onclick", "remove()");
    btn2.setAttribute("class", "btn-primary btn-sm newBtn");
    li2.appendChild(text2);
    li2.appendChild(btn2);
    document.getElementById("myUl").appendChild(li2);
    }
    });


    HTML:



    <div class="mainDiv">
    <input id="task" class="input-lg">
    <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
    </div>
    <ul id="myUl"></ul>









    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I am attempting to make a JavaScript To-Do list app with an Array, push method, removeChild method, and a keydown function. I want the user to be able to use both the add button and the enter key to enter input. I succeeded in making an app that ultimately has 2 functions with 2 similar sets of variables and DOM methods: one for add button and another for keydown function (when the user hits enter after adding input). This setup seems to work fine. However, I would like to know if it is possible to create a ONE function that facilitates both the Add button AND the keydown function with one set of DOM methods. If so, could someone please provide a potential demo? Thanks!



      (The following demo contains Bootstrap classes)



      JS:



      var array = ;

      function add() {
      var task = document.getElementById("task").value;
      array.push(task);
      var text = document.createTextNode(task);
      var li = document.createElement("li");
      var btn = document.createElement("button");
      btn.appendChild(document.createTextNode("x"));
      btn.setAttribute("onclick", "remove()");
      btn.setAttribute("class", "btn-primary btn-sm newBtn");
      li.appendChild(text);
      li.appendChild(btn);
      document.getElementById("myUl").appendChild(li);
      }

      function remove() {
      var task = this.event.currentTarget.parentNode;
      document.getElementById("myUl").removeChild(task);
      }

      document.getElementById("task").addEventListener("keydown", function(event) {
      if (event.which == 13) {
      var task2 = document.getElementById("task").value;
      array.push(task2);
      var text2 = document.createTextNode(task2);
      var li2 = document.createElement("li");
      var btn2 = document.createElement("button");
      btn2.appendChild(document.createTextNode("x"));
      btn2.setAttribute("onclick", "remove()");
      btn2.setAttribute("class", "btn-primary btn-sm newBtn");
      li2.appendChild(text2);
      li2.appendChild(btn2);
      document.getElementById("myUl").appendChild(li2);
      }
      });


      HTML:



      <div class="mainDiv">
      <input id="task" class="input-lg">
      <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
      </div>
      <ul id="myUl"></ul>









      share|improve this question













      I am attempting to make a JavaScript To-Do list app with an Array, push method, removeChild method, and a keydown function. I want the user to be able to use both the add button and the enter key to enter input. I succeeded in making an app that ultimately has 2 functions with 2 similar sets of variables and DOM methods: one for add button and another for keydown function (when the user hits enter after adding input). This setup seems to work fine. However, I would like to know if it is possible to create a ONE function that facilitates both the Add button AND the keydown function with one set of DOM methods. If so, could someone please provide a potential demo? Thanks!



      (The following demo contains Bootstrap classes)



      JS:



      var array = ;

      function add() {
      var task = document.getElementById("task").value;
      array.push(task);
      var text = document.createTextNode(task);
      var li = document.createElement("li");
      var btn = document.createElement("button");
      btn.appendChild(document.createTextNode("x"));
      btn.setAttribute("onclick", "remove()");
      btn.setAttribute("class", "btn-primary btn-sm newBtn");
      li.appendChild(text);
      li.appendChild(btn);
      document.getElementById("myUl").appendChild(li);
      }

      function remove() {
      var task = this.event.currentTarget.parentNode;
      document.getElementById("myUl").removeChild(task);
      }

      document.getElementById("task").addEventListener("keydown", function(event) {
      if (event.which == 13) {
      var task2 = document.getElementById("task").value;
      array.push(task2);
      var text2 = document.createTextNode(task2);
      var li2 = document.createElement("li");
      var btn2 = document.createElement("button");
      btn2.appendChild(document.createTextNode("x"));
      btn2.setAttribute("onclick", "remove()");
      btn2.setAttribute("class", "btn-primary btn-sm newBtn");
      li2.appendChild(text2);
      li2.appendChild(btn2);
      document.getElementById("myUl").appendChild(li2);
      }
      });


      HTML:



      <div class="mainDiv">
      <input id="task" class="input-lg">
      <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
      </div>
      <ul id="myUl"></ul>






      javascript arrays push keydown removechild






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 17 at 19:51









      JS_is_awesome18

      322




      322
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          2
          down vote



          accepted










          Since you already have the necessary logic wrapped into a single add() function, why don't you just call it in your keydown event listener the same way you were calling it from your button's onclick listener?



          document.getElementById("task").addEventListener("keydown", function(event) {
          if (event.which == 13) {
          add();
          }
          });


          As a side note, the way you wrote your code, you didn't have to name your btn2/ task2/etc variables distinctly from btn/task/etc - they are only visible inside their functions' scopes. Inside the { } that is.
          Anyway, here's a working snippet:






          var array = ;

          function add() {
          var task = document.getElementById("task").value;
          array.push(task);
          var text = document.createTextNode(task);
          var li = document.createElement("li");
          var btn = document.createElement("button");
          btn.appendChild(document.createTextNode("x"));
          btn.setAttribute("onclick", "remove()");
          btn.setAttribute("class", "btn-primary btn-sm newBtn");
          li.appendChild(text);
          li.appendChild(btn);
          document.getElementById("myUl").appendChild(li);
          }

          function remove() {
          var task = this.event.currentTarget.parentNode;
          document.getElementById("myUl").removeChild(task);
          }

          document.getElementById("task").addEventListener("keydown", function(event) {
          if (event.which == 13) {
          add()
          }
          });

          <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
          <div class="mainDiv">
          <input id="task" class="input-lg">
          <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
          </div>
          <ul id="myUl"></ul>








          share|improve this answer





















          • This is brilliant. Much appreciated!
            – JS_is_awesome18
            Nov 18 at 2:23


















          up vote
          0
          down vote













          this works.



          var array = ;

          // add the event listeners.
          document.querySelector("#inputBtn").addEventListener("click", createToDO);
          document.querySelector("#task").addEventListener("keydown", createToDO);

          function createToDO(e) {
          var eventNum = e.which; //grab the event number

          if (eventNum === 1 || eventNum === 13) { // checks for both the button press and enter
          var li = document.createElement("li"),
          btn = document.createElement("button"),
          task = document.getElementById("task").value,
          text = document.createTextNode(task);

          array.push(task);
          btn.appendChild(document.createTextNode("Remove"));
          btn.addEventListener("click", remove);
          btn.setAttribute("class", "btn-primary btn-sm newBtn");
          li.appendChild(text);
          li.appendChild(btn);
          document.querySelector("#myUl").appendChild(li);
          }
          }

          function remove(e) {
          var task = e.target.parentElement;
          task.remove();
          }


          You don't need to add the click handler in the HTML. This solution adds the listeners via the JavaScript.



          <div class="mainDiv">
          <input id="task" class="input-lg">
          <!-- <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button> -->
          <button id="inputBtn" class="btn-primary btn-lg">add</button>
          </div>
          <ul id="myUl"></ul>





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53354966%2fhow-to-make-a-javascript-to-do-list-with-keydown-function%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            2
            down vote



            accepted










            Since you already have the necessary logic wrapped into a single add() function, why don't you just call it in your keydown event listener the same way you were calling it from your button's onclick listener?



            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add();
            }
            });


            As a side note, the way you wrote your code, you didn't have to name your btn2/ task2/etc variables distinctly from btn/task/etc - they are only visible inside their functions' scopes. Inside the { } that is.
            Anyway, here's a working snippet:






            var array = ;

            function add() {
            var task = document.getElementById("task").value;
            array.push(task);
            var text = document.createTextNode(task);
            var li = document.createElement("li");
            var btn = document.createElement("button");
            btn.appendChild(document.createTextNode("x"));
            btn.setAttribute("onclick", "remove()");
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.getElementById("myUl").appendChild(li);
            }

            function remove() {
            var task = this.event.currentTarget.parentNode;
            document.getElementById("myUl").removeChild(task);
            }

            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add()
            }
            });

            <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="mainDiv">
            <input id="task" class="input-lg">
            <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
            </div>
            <ul id="myUl"></ul>








            share|improve this answer





















            • This is brilliant. Much appreciated!
              – JS_is_awesome18
              Nov 18 at 2:23















            up vote
            2
            down vote



            accepted










            Since you already have the necessary logic wrapped into a single add() function, why don't you just call it in your keydown event listener the same way you were calling it from your button's onclick listener?



            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add();
            }
            });


            As a side note, the way you wrote your code, you didn't have to name your btn2/ task2/etc variables distinctly from btn/task/etc - they are only visible inside their functions' scopes. Inside the { } that is.
            Anyway, here's a working snippet:






            var array = ;

            function add() {
            var task = document.getElementById("task").value;
            array.push(task);
            var text = document.createTextNode(task);
            var li = document.createElement("li");
            var btn = document.createElement("button");
            btn.appendChild(document.createTextNode("x"));
            btn.setAttribute("onclick", "remove()");
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.getElementById("myUl").appendChild(li);
            }

            function remove() {
            var task = this.event.currentTarget.parentNode;
            document.getElementById("myUl").removeChild(task);
            }

            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add()
            }
            });

            <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="mainDiv">
            <input id="task" class="input-lg">
            <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
            </div>
            <ul id="myUl"></ul>








            share|improve this answer





















            • This is brilliant. Much appreciated!
              – JS_is_awesome18
              Nov 18 at 2:23













            up vote
            2
            down vote



            accepted







            up vote
            2
            down vote



            accepted






            Since you already have the necessary logic wrapped into a single add() function, why don't you just call it in your keydown event listener the same way you were calling it from your button's onclick listener?



            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add();
            }
            });


            As a side note, the way you wrote your code, you didn't have to name your btn2/ task2/etc variables distinctly from btn/task/etc - they are only visible inside their functions' scopes. Inside the { } that is.
            Anyway, here's a working snippet:






            var array = ;

            function add() {
            var task = document.getElementById("task").value;
            array.push(task);
            var text = document.createTextNode(task);
            var li = document.createElement("li");
            var btn = document.createElement("button");
            btn.appendChild(document.createTextNode("x"));
            btn.setAttribute("onclick", "remove()");
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.getElementById("myUl").appendChild(li);
            }

            function remove() {
            var task = this.event.currentTarget.parentNode;
            document.getElementById("myUl").removeChild(task);
            }

            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add()
            }
            });

            <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="mainDiv">
            <input id="task" class="input-lg">
            <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
            </div>
            <ul id="myUl"></ul>








            share|improve this answer












            Since you already have the necessary logic wrapped into a single add() function, why don't you just call it in your keydown event listener the same way you were calling it from your button's onclick listener?



            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add();
            }
            });


            As a side note, the way you wrote your code, you didn't have to name your btn2/ task2/etc variables distinctly from btn/task/etc - they are only visible inside their functions' scopes. Inside the { } that is.
            Anyway, here's a working snippet:






            var array = ;

            function add() {
            var task = document.getElementById("task").value;
            array.push(task);
            var text = document.createTextNode(task);
            var li = document.createElement("li");
            var btn = document.createElement("button");
            btn.appendChild(document.createTextNode("x"));
            btn.setAttribute("onclick", "remove()");
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.getElementById("myUl").appendChild(li);
            }

            function remove() {
            var task = this.event.currentTarget.parentNode;
            document.getElementById("myUl").removeChild(task);
            }

            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add()
            }
            });

            <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="mainDiv">
            <input id="task" class="input-lg">
            <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
            </div>
            <ul id="myUl"></ul>








            var array = ;

            function add() {
            var task = document.getElementById("task").value;
            array.push(task);
            var text = document.createTextNode(task);
            var li = document.createElement("li");
            var btn = document.createElement("button");
            btn.appendChild(document.createTextNode("x"));
            btn.setAttribute("onclick", "remove()");
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.getElementById("myUl").appendChild(li);
            }

            function remove() {
            var task = this.event.currentTarget.parentNode;
            document.getElementById("myUl").removeChild(task);
            }

            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add()
            }
            });

            <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="mainDiv">
            <input id="task" class="input-lg">
            <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
            </div>
            <ul id="myUl"></ul>





            var array = ;

            function add() {
            var task = document.getElementById("task").value;
            array.push(task);
            var text = document.createTextNode(task);
            var li = document.createElement("li");
            var btn = document.createElement("button");
            btn.appendChild(document.createTextNode("x"));
            btn.setAttribute("onclick", "remove()");
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.getElementById("myUl").appendChild(li);
            }

            function remove() {
            var task = this.event.currentTarget.parentNode;
            document.getElementById("myUl").removeChild(task);
            }

            document.getElementById("task").addEventListener("keydown", function(event) {
            if (event.which == 13) {
            add()
            }
            });

            <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
            <div class="mainDiv">
            <input id="task" class="input-lg">
            <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
            </div>
            <ul id="myUl"></ul>






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 17 at 22:35









            shkaper

            593211




            593211












            • This is brilliant. Much appreciated!
              – JS_is_awesome18
              Nov 18 at 2:23


















            • This is brilliant. Much appreciated!
              – JS_is_awesome18
              Nov 18 at 2:23
















            This is brilliant. Much appreciated!
            – JS_is_awesome18
            Nov 18 at 2:23




            This is brilliant. Much appreciated!
            – JS_is_awesome18
            Nov 18 at 2:23












            up vote
            0
            down vote













            this works.



            var array = ;

            // add the event listeners.
            document.querySelector("#inputBtn").addEventListener("click", createToDO);
            document.querySelector("#task").addEventListener("keydown", createToDO);

            function createToDO(e) {
            var eventNum = e.which; //grab the event number

            if (eventNum === 1 || eventNum === 13) { // checks for both the button press and enter
            var li = document.createElement("li"),
            btn = document.createElement("button"),
            task = document.getElementById("task").value,
            text = document.createTextNode(task);

            array.push(task);
            btn.appendChild(document.createTextNode("Remove"));
            btn.addEventListener("click", remove);
            btn.setAttribute("class", "btn-primary btn-sm newBtn");
            li.appendChild(text);
            li.appendChild(btn);
            document.querySelector("#myUl").appendChild(li);
            }
            }

            function remove(e) {
            var task = e.target.parentElement;
            task.remove();
            }


            You don't need to add the click handler in the HTML. This solution adds the listeners via the JavaScript.



            <div class="mainDiv">
            <input id="task" class="input-lg">
            <!-- <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button> -->
            <button id="inputBtn" class="btn-primary btn-lg">add</button>
            </div>
            <ul id="myUl"></ul>





            share|improve this answer

























              up vote
              0
              down vote













              this works.



              var array = ;

              // add the event listeners.
              document.querySelector("#inputBtn").addEventListener("click", createToDO);
              document.querySelector("#task").addEventListener("keydown", createToDO);

              function createToDO(e) {
              var eventNum = e.which; //grab the event number

              if (eventNum === 1 || eventNum === 13) { // checks for both the button press and enter
              var li = document.createElement("li"),
              btn = document.createElement("button"),
              task = document.getElementById("task").value,
              text = document.createTextNode(task);

              array.push(task);
              btn.appendChild(document.createTextNode("Remove"));
              btn.addEventListener("click", remove);
              btn.setAttribute("class", "btn-primary btn-sm newBtn");
              li.appendChild(text);
              li.appendChild(btn);
              document.querySelector("#myUl").appendChild(li);
              }
              }

              function remove(e) {
              var task = e.target.parentElement;
              task.remove();
              }


              You don't need to add the click handler in the HTML. This solution adds the listeners via the JavaScript.



              <div class="mainDiv">
              <input id="task" class="input-lg">
              <!-- <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button> -->
              <button id="inputBtn" class="btn-primary btn-lg">add</button>
              </div>
              <ul id="myUl"></ul>





              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                this works.



                var array = ;

                // add the event listeners.
                document.querySelector("#inputBtn").addEventListener("click", createToDO);
                document.querySelector("#task").addEventListener("keydown", createToDO);

                function createToDO(e) {
                var eventNum = e.which; //grab the event number

                if (eventNum === 1 || eventNum === 13) { // checks for both the button press and enter
                var li = document.createElement("li"),
                btn = document.createElement("button"),
                task = document.getElementById("task").value,
                text = document.createTextNode(task);

                array.push(task);
                btn.appendChild(document.createTextNode("Remove"));
                btn.addEventListener("click", remove);
                btn.setAttribute("class", "btn-primary btn-sm newBtn");
                li.appendChild(text);
                li.appendChild(btn);
                document.querySelector("#myUl").appendChild(li);
                }
                }

                function remove(e) {
                var task = e.target.parentElement;
                task.remove();
                }


                You don't need to add the click handler in the HTML. This solution adds the listeners via the JavaScript.



                <div class="mainDiv">
                <input id="task" class="input-lg">
                <!-- <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button> -->
                <button id="inputBtn" class="btn-primary btn-lg">add</button>
                </div>
                <ul id="myUl"></ul>





                share|improve this answer












                this works.



                var array = ;

                // add the event listeners.
                document.querySelector("#inputBtn").addEventListener("click", createToDO);
                document.querySelector("#task").addEventListener("keydown", createToDO);

                function createToDO(e) {
                var eventNum = e.which; //grab the event number

                if (eventNum === 1 || eventNum === 13) { // checks for both the button press and enter
                var li = document.createElement("li"),
                btn = document.createElement("button"),
                task = document.getElementById("task").value,
                text = document.createTextNode(task);

                array.push(task);
                btn.appendChild(document.createTextNode("Remove"));
                btn.addEventListener("click", remove);
                btn.setAttribute("class", "btn-primary btn-sm newBtn");
                li.appendChild(text);
                li.appendChild(btn);
                document.querySelector("#myUl").appendChild(li);
                }
                }

                function remove(e) {
                var task = e.target.parentElement;
                task.remove();
                }


                You don't need to add the click handler in the HTML. This solution adds the listeners via the JavaScript.



                <div class="mainDiv">
                <input id="task" class="input-lg">
                <!-- <button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button> -->
                <button id="inputBtn" class="btn-primary btn-lg">add</button>
                </div>
                <ul id="myUl"></ul>






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 18 at 6:51









                andre mcgruder

                996188




                996188






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53354966%2fhow-to-make-a-javascript-to-do-list-with-keydown-function%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Ottavio Pratesi

                    Tricia Helfer

                    15 giugno