🔥小白实战--Todo-List-待做清单 属于自己的待做清单

前言

🔥🔥🔥小白实战🔥🔥🔥

今天我们来学习如何Coding出属于我们自己的Todo-List-待做清单!!

正文

我们要实现这样一个属于我们自己的Todo-List待做清单该如何去完成呢?

首先,我们对页面进行分析

它包括一个TO-DO list标,一个没有边框的输入框,每次输入完一个代办事项之后

会在下方生成一个复选选框和代办事项。当选中后,代办事项会被添加一个删除线,并且变为灰色!

由此观之,我们需要一个html文件,一个css文件,一个js文件。

编写HTML文件

我们的html文件相当简单!!只需要一个标题和表单,还有一个ul!

我们的代码可以这样写:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css">
</head>
<body>
    <div>
        <h3>TO-DO list</h3>
        <input type="text" name="" id="list-input" placeholder="请输入代办事项">
        <ul id="list">
        </ul>
    </div>
    <script src="./index.js">
        
    </script>
</body>
</html>
  1. 我们在头文件中引入我们的style.css文件,在body中引入index.js文件
  2. 在一个div中定义一个h3和一个inputul标签
  3. input标签中设置idlist-input,默认显示placeholder="请输入代办事项"
  4. ul标签的id设置为list

编写CSS文件

在我们的style.css文件中,我们的样式可以这样设置:

css 复制代码
ul li{
    list-style: none;
    
}
input{
    border: none;
    outline: none;
}
body{
    margin-top: 0;
    margin-left: 0;
}
h3{
    text-align: center;
}
div{
  position: absolute;
  left: 50%;
  transform: translate(-50%);
  width: 250px;
}
  1. ul li{}:这个选择器将应用于所有的<ul>元素下的<li>元素。list-style: none;将去除列表项前面的标记(例如圆点或数字)。
  2. input{}:这个选择器将应用于所有的<input>元素。border: none;将去除输入框的边框,而outline: none;将去除输入框周围的轮廓线。
  3. body{}:这个选择器将应用于整个HTML文档的<body>元素。margin-top: 0;margin-left: 0; 将去除页面顶部和左侧的外边距,这可以使页面内容更接近页面的顶部和左侧边缘。
  4. h3{}:这个选择器将应用于所有的<h3>元素。text-align: center; 将文本居中对齐。
  5. div{}:这个选择器将应用于所有的<div>元素。position: absolute; 将元素定位在相对于最近的定位祖先元素的绝对位置。如果元素没有定位的祖先元素,那么它会相对于初始包含块进行定位。然后,left: 50%; 将元素的左边缘移动到其包含块的中心,而 transform: translate(-50%); 则将元素的中心点移到其包含块的中心。这通常被称为"水平居中"的一种方式。最后,width: 250px; 设置了元素的宽度为250像素。

编写js文件

index.js文件中,我们可以这样写:

js 复制代码
// 监听用户敲击Enter键
var input =document.getElementById('list-input')
var ul = document.getElementById('list')
var oldlength=0;

var todoItem = []
input.onkeyup=function(e){
    if(e.keyCode===13){
        if(input.value!=''){
            todoItem.push(input.value)
            makeList()
            input.value=''
        }
    }
}
function makeList(){
    //循环数组todoItem生成多份li结构,添加到ul中
    //for循环
    //todoItem.length
    //生成li
    for(i=oldlength;i<todoItem.length;i++){
        oldlength = todoItem.length
        console.log(todoItem[i].value)
        todoli=`
        <li>
                <input type="checkbox" id="checkbox" onclick="checkboxOnclick(this)">
                 <span> ${todoItem[i]} </span>
        </li>
        `
        ul.insertAdjacentHTML('afterbegin',todoli)
    }
}

 function checkboxOnclick(checkbox){
    if(checkbox.checked==true){
       checkbox.parentNode.style.color="grey"
       checkbox.parentNode.style.textDecoration="line-through"
    }else{
        checkbox.parentNode.style.color="black"
       checkbox.parentNode.style.textDecoration="none"
    }


}

这段代码是一个简单的待办事项(TO-DO list)应用,用户可以在输入框中输入待办事项,点击Enter键后,该事项将作为一项待办事项添加到列表中。每个待办事项都可以通过点击前面的复选框来标记为已完成或未完成。

  1. 通过document.getElementById获取输入框和列表的DOM元素。
  2. 通过onkeyup事件监听输入框,当用户敲击Enter键时,调用相应函数。
  3. 在该函数中,检查输入框的值是否为空,如果不为空,则将该值添加到todoItem数组中,并调用makeList函数生成并显示新的待办事项列表。
  4. makeList函数通过循环todoItem数组,为每个待办事项生成一个li元素,并将其添加到列表中。
  5. 还定义了一个checkboxOnclick函数,用于处理复选框的点击事件。当复选框被选中时,将该项的颜色设置为灰色,并添加删除线(表示已完成);当复选框未被选中时,将该项的颜色设置为黑色,并删除删除线(表示未完成)。

最后效果

这样,我们就实现了这样一个简单的Todo-List 待做事项清单实战啦!!

如果你有任何改进和想法,欢迎在评论区留言!!留下一个小小的赞鼓励支持一下吧!!!🌹🌹🌹

相关推荐
我是天龙_绍1 分钟前
Easing 曲线 easings.net
前端
知识分享小能手5 分钟前
微信小程序入门学习教程,从入门到精通,电影之家小程序项目知识点详解 (17)
前端·javascript·学习·微信小程序·小程序·前端框架·vue
訾博ZiBo6 分钟前
React组件复用导致的闪烁问题及通用解决方案
前端
Dever8 分钟前
记一次 CORS 深水坑:开启 withCredentials 后Response headers 只剩 content-type
前端·javascript
临江仙45510 分钟前
流式 Markdown 渲染在 AI 应用中的应用探秘:从原理到优雅实现
前端·vue.js
Hilaku22 分钟前
为什么我开始减少逛技术社区,而是去读非技术的书?
前端·javascript·面试
m0_7280331337 分钟前
JavaWeb——(web.xml)中的(url-pattern)
xml·前端
猪哥帅过吴彦祖40 分钟前
第 8 篇:更广阔的世界 - 加载 3D 模型
前端·javascript·webgl
七月十二42 分钟前
[Js]使用highlight.js高亮vue代码
前端
Asort42 分钟前
JavaScript设计模式(十二)——代理模式 (Proxy)
前端·javascript·设计模式