Make a Todo App with Native JavaScript

Many people share how to make a todo app using JavaScript library like Vue or React. I think by making one with just pure native JavaScript, I can train myself with project structuring.
    <div>
      <input id ="todoinput">
      <button onclick = "add()">Add</button>
    </div>
    <ol id = "todos"></ol>
    <script>
      var i = 1;
      function add(){
        var newtodo = document.createElement('li');
        newtodo.setAttribute("id","todo" + i);
        newtodo.innerHTML = `${todoinput.value}<button onclick = "deletefunc(${i})">Delete</button><button onclick = "updatefunc(${i})">Update</button>`;
        todos.appendChild(newtodo);
        todoinput.value = "";
        i++;
      };
      
      function deletefunc(n){
      	todos.removeChild(document.getElementById("todo" + n));
      }
        function updatefunc(n){    
          document.getElementById("todo" + n).innerHTML = `${todoinput.value}<button onclick = "deletefunc(${n})">Delete</button><button onclick = "updatefunc(${n})">Update</button>`;
          todoinput.value = "";
      }
    </script>
    

    Keypoints

    1. I use `` to specify todo list item innerHTML and ${} sign to escape into JavaScript code.
    2. The structure of this app is based on inreasing index "i" that is the unique id of each todo list. With this "i", I can control which todo is to delete or update.
    3. One can easily integrate the front-end js code to back-end server via fetch request. This frond end app can prevent user from constant refreshing web browser or sending get request every time a to-do is added, updated or deleted in order to update the user interface. This can reduce access to database and reduce money spent on traffic to database.

    Comments

    Popular posts from this blog

    How to Make A Reusable Image Slideshow HTML Component With Vanilla JavaScript

    HTML Tags and Inline CSS that Work In Plotly.js Title

    How to Type Spaces In HTML Input And Display In the Browser