使用JavaScript class或function创建待办To do 应用

HTML(使用JavaScript class或function相同)

<html>
    <head>
        <title>to do application</title>
        <link rel="stylesheet" href="style.css"></link>
        <script src="https://kit.fontawesome.com/8160d6fcce.js" crossorigin="anonymous"></script>
    </head>
    <body>
        <div id="main">
            <div id ="input section">
                <h1>To do list</h1>
                <input type="text"  id ="todo-text"placeholder="Enter the tasks"/>
            </div>
            <div id ="list section">
                <ul id ="todolist_ul">
                </ul>
            </div>
        </div>
        <script src="index.js"></script>

    </body>
</html>

CSS(使用JavaScript class或function相同)

.checked {
    text-decoration: line-through;
}

JS使用JavaScript class

const todolist = []; //declaring a array
const todoListElement = document.querySelector("#todolist_ul");
class todoapplication {//class declaration
    constructor(todoListElement) {//property of class
        this.todoListElement = todoListElement;
        document.querySelector("#todo-text").addEventListener("keydown", (e) => {
            if (e.keyCode == 13) {//key control for shift+enter
                addtasks.addToDo();
            }
        });
    }
    addToDo() {//method1-adding tasks to array
        this.todotext = document.querySelector("#todo-text").value;
        if (this.todotext == "") {//returning function when no task is entered
            return;
        } else {//creating object
            this.todoObject = {
                id: todolist.length,
                todotext: this.todotext,
                isdone: false,
            };
            todolist.unshift(this.todoObject);
            this.displaytodos();//refreshing page
        }
    }
    displaytodos() {//method2-displaying the tasks in html page

        todoListElement.innerHTML = "";
        document.querySelector("#todo-text").value = "";
//render list items inside the ul tag
        todolist.forEach((item) => {
            this.listelement = document.createElement("li");//creating list tags
            this.listelement.innerHTML = item.todotext;
            this.delBtn = document.createElement("i");
            this.delBtn.setAttribute("data-id", item.id);
            this.delBtn.classList.add("fa");//when we have more than one class name
            this.delBtn.classList.add("fa-trash-o");
            if (item.isdone) {//checking whether the the task is done or not
                this.listelement.setAttribute("class", "checked");
            }
            this.listelement.setAttribute("data-id", item.id);//setting attribute
            this.listelement.addEventListener("click", function (e) {
                this.selectedID = e.target.getAttribute("data-id");
                addtasks.doneToDo(this.selectedID);
            });
            this.delBtn.addEventListener("click", function (e) {//adding event to html element
                this.delId = e.target.getAttribute("data-id")
                addtasks.deleteItem(this.delId)
            })
            todoListElement.appendChild(this.listelement);//linking li tag with ul lag
            this.listelement.appendChild(this.delBtn);//linking del id vth li tag
        });
    }
    deleteItem(delId) {//method3-creating fun for deleting elements
        this.deleteindex = todolist.findIndex((item) => item.id == delId)
        todolist.splice(this.deleteindex, 1)
        this.displaytodos();
    }
    doneToDo(selectedID) {//method4-function is used to check whether task is done or not
        this.selectIDindex = todolist.findIndex((item) => item.id == selectedID);
        if (this.selectIDindex == -1) {//when array becomes null
            return;
        } else {
            todolist[this.selectIDindex].isdone ? (todolist[this.selectIDindex].isdone = false)//using ternary operator
                    : (todolist[this.selectIDindex].isdone = true);
            this.displaytodos();
        }
    }
}
const addtasks = new todoapplication(todoListElement)
//document.querySelector("#add_button").addEventListener("click", addToDo); //adding events on html elements
//document.querySelector("#todo-text").addEventListener("keydown", (e) => {
//    if (e.keyCode == 13) {//key control for shift+enter
//        addtasks.addToDo();
//    }
//});



JS使用JavaScript function

const todolist = []; //declaring a array
const todoListElement = document.querySelector("#todolist_ul");
function addToDo() {//method1-adding tasks to array
    todotext = document.querySelector("#todo-text").value;
    if (todotext == "") {//returning function when no task is entered
        return;
    } else {//creating object
        todoObject = {
            id: todolist.length,
            todotext: todotext,
            isdone: false,
        };
        todolist.unshift(todoObject);
        displaytodos(); //refreshing page
    }
}
function displaytodos() {//method2-displaying the tasks in html page

    todoListElement.innerHTML = "";
    document.querySelector("#todo-text").value = "";
//render list items inside the ul tag
    todolist.forEach((item) => {
        listelement = document.createElement("li"); //creating list tags
        listelement.innerHTML = item.todotext;
        delBtn = document.createElement("i");
        delBtn.setAttribute("data-id", item.id);
        delBtn.classList.add("fa"); //when we have more than one class name
        delBtn.classList.add("fa-trash-o");
        if (item.isdone) {//checking whether the the task is done or not
            listelement.setAttribute("class", "checked");
        }
        listelement.setAttribute("data-id", item.id); //setting attribute
        listelement.addEventListener("click", function (e) {
            selectedID = e.target.getAttribute("data-id");
            doneToDo(selectedID);
        });
        delBtn.addEventListener("click", function (e) {//adding event to html element
            delId = e.target.getAttribute("data-id")
            deleteItem(delId)
        })
        todoListElement.appendChild(listelement); //linking li tag with ul lag
        listelement.appendChild(delBtn); //linking del id vth li tag
    });
}
function deleteItem(delId) {//method3-creating fun for deleting elements
    deleteindex = todolist.findIndex((item) => item.id == delId)
    todolist.splice(deleteindex, 1)
    displaytodos();
}
function doneToDo(selectedID) {//method4-function is used to check whether task is done or not
    selectIDindex = todolist.findIndex((item) => item.id == selectedID);
    if (selectIDindex == -1) {//when array becomes null
        return;
    } else {
        todolist[selectIDindex].isdone ? (todolist[selectIDindex].isdone = false)//using ternary operator
                : (todolist[selectIDindex].isdone = true);
        displaytodos();
    }
}

//document.querySelector("#add_button").addEventListener("click", addToDo); //adding events on html elements
document.querySelector("#todo-text").addEventListener("keydown", (e) => {
    if (e.keyCode == 13) {//key control for shift+enter
        addToDo();
    }
});



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值