Skip to main content

First ToDo list app using JavaScript

 ToDo list app using JavaScript:-


<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
        integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">

    <title>ToDo List</title>
</head>

<body>
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <a class="navbar-brand" href="#">ToDo List</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
                        data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Items
                    </a>
                    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <a class="dropdown-item" href="#">Action</a>
                        <a class="dropdown-item" href="#">Another action</a>
                        <div class="dropdown-divider"></div>
                        <a class="dropdown-item" href="#">Something else here</a>
                    </div>
                </li>
                <li class="nav-item">
                    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Contact</a>
                </li>
            </ul>
            <form class="form-inline my-2 my-lg-0">
                <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
            </form>
        </div>
    </nav>
    <div class="container my-4">
        <h2 class="text-center">ToDo List</h2>

        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" class="form-control" id="title" aria-describedby="emailHelp">
            <medium id="emailHelp" class="form-text text-muted">Add a task to the list
            </medium>
        </div>
        <div class="form-group">
            <label for="description">Description</label>
            <textarea class="form-control" id="description" rows="3"></textarea>
        </div>

        <button id="add" class="btn btn-primary">Add to List</button>
        <button id="clear" class="btn btn-primary" onclick="clearStorage()">Clear List</button>

        <div id="items" class="my-4">
            <h2> Your Items </h2>
            <table class="table">
                <thead>
                    <tr>
                        <th scope="col">SrNo</th>
                        <th scope="col">Item title</title>
                        </th>
                        <th scope="col">Item Description</th>
                        <th scope="col">Action</th>
                    </tr>
                </thead>
                <tbody id="tableBody">
                    <tr>
                        <th scope="row">1</th>
                        <td>Get some coffee</td>
                        <td>You need coffee as you are a coder</td>
                        <td><button class="btn btn-sm btn-primary">Delete</button>
                    </tr>

                </tbody>
            </table>
        </div>
    </div>
    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
        integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
        crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx"
        crossorigin="anonymous"></script>
    <script>

        function getAndUpdate() {
            console.log("Updating List...");
            tit = document.getElementById('title').value;
            desc = document.getElementById('description').value;
            if (localStorage.getItem('itemsJson') == null) {
                itemsJsonArray = [];
                itemsJsonArray.push([tit, desc]);
                localStorage.setItem('itemsJson', JSON.stringify(itemsJsonArray));
            }
            else {
                itemsJsonArrayStr = localStorage.getItem('itemsJson');
                itemsJsonArray = JSON.parse(itemsJsonArrayStr);
                itemsJsonArray.push([tit, desc]);
                localStorage.setItem('itemsJson', JSON.stringify(itemsJsonArray));
            }
            update();
        }

        function update() {
            if (localStorage.getItem('itemsJson') == null) {
                itemsJsonArray = [];
                localStorage.setItem('itemsJson', JSON.stringify(itemsJsonArray));
            }
            else {
                itemsJsonArrayStr = localStorage.getItem('itemsJson');
                itemsJsonArray = JSON.parse(itemsJsonArrayStr);
            }
            // Populate the table
            let tableBody = document.getElementById("tableBody")
            let str = "";
            itemsJsonArray.forEach((element, index) => {
                str += `
                    <th scope="row">${index + 1}</th>
                    <td>${element[0]}</td>
                    <td>${element[1]}</td>
                    <td><button class="btn btn-sm btn-primary" onclick="deleted(${index})">Delete</button>
                    </tr>`;
            });
            tableBody.innerHTML = str;
        }
        add = document.getElementById("add");
        add.addEventListener("click", getAndUpdate);
        update();

        function deleted(itemIndex) {
            console.log("Delete", itemIndex)
            itemsJsonArrayStr = localStorage.getItem('itemsJson');
            itemsJsonArray = JSON.parse(itemsJsonArrayStr);
            itemsJsonArray.splice(itemIndex, 1);
            // Delete item index from the array
            localStorage.setItem('itemsJson', JSON.stringify(itemsJsonArray));
            update();
        }

        function clearStorage() {
            if (confirm("Do you really want to clear all tasks?")) {
                console.log('Clearing the storage');
                localStorage.clear();
                update();
            }

        }
    </script>

    <!-- Option 2: jQuery, Popper.js, and Bootstrap JS
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
</body>

</html>

Comments

Popular posts from this blog

React Native Full Notes

React Native Full Notes Device Orientation Like Youtube - First Go To App.json and set orientation:: "default"; Then go to project folder and run npm i @react-native-community/hooks import  {  }  from   'expo-status-bar' ; import   React   from   'react' ; import  {  Dimensions ,  StyleSheet ,  SafeAreaView ,  Text ,  View ,  Button ,  Platform ,  StatusBar  }  from   'react-native' ; import  {  useDimensions ,  useDeviceOrientation  }  from   "@react-native-community/hooks" ;   export   default   function   App () {    const  {  landscape  } =  useDeviceOrientation ();    return  (      < SafeAreaView   style = { styles . container } >        < View   style = { {          backg...

React Native Notes

React Native Notes Flatlist Vs ScrollView:     Flatlist when you have infinite data then it will boost your apps performance.     ScrollView when you have 20 or less items to display Why we use key in array render? - Let's take an ex you have to render posts on ig if key is not present then every time the new post is added to array js will rerender all the posts  - But if we use key={id}then js will only render the newest post - And save juicy computational power