当前位置: 首页 > Web前端 > JavaScript

【JS30-WesBos】To-dolist10

时间:2023-03-27 14:49:41 JavaScript

title:【Nativejavascriptproject】Golist10date:2022-01-0920:27:51tags:Nativejavascriptprojectcategories:30nativejavascriptprojectsAuthor:?IaineWan1简介:30DayChallenge是由WesBos设计的为期30天的原生js编程挑战。项目免费提供30个视频教程,30个挑战的入门文档,以及30个挑战方案的源码。这个项目是第10天的“待办事项”项目。我添加了双击删除任务和添加任务的功能。玩得开心网站!?(^?^*)网页效果:https://janice143.github.io/g...项目描述利用一些checkbox类型的输入元素,并在js中实现特定功能,设计了待办事项列表页面。在网页中,可以通过点击复选框来标记任务状态,按住shift键可以实现对任务的多重勾选。您还可以通过单击“添加”来添加任务,通过双击来删除已完成的任务。项目的关键类型是checkbox的input元素的点击事件。回调函数为clickCheke.shiftKeythis.checked标记最后一次点击输入,多选内输入类型为文本的input元素的change事件。回调函数由displayTask使用createElement创建,元素使用append在指定节点后添加html输入文本并输入文本,this.value=''监听双击事件,移除该元素的双击事件task复选框后面的text,回调函数为removeTaske.path[1].remove()项目流程的html部分进入文本框input,定位到文本框上的div元素。点击后显示:无。四个类名都是task-item,也就是复选框和任务文本p的占位符标签。新添加的任务会在这里追加Js部分,获取所有checkbox类型的input,遍历点击事件,点击事件就是clickCheck多选操作的原理if(e.shiftKey&&this.checked)inputChecks.forEach(inputCheck=>{console.log(inputCheck===this||inputCheck===lastChecked);if(inputCheck===this||inputCheck===lastChecked){inBetween=!inBetween;//console.log('开始');}//console.log('InBetween',inBetween);if(inBetween){inputChecked.checked=true;}})获取所有p元素,遍历双击事件double-点击事件为removeTask找到对应的任务路径,remove是可以functionremoveTask(e){console.log(e.path[1].remove());}获取类名add-icon的元素,监听点击事件,点击隐藏页面元素。隐藏和显示页面元素有两种方法:方法一:在元素中设置displayvartstyleattribute=document.getElementById('test');//选择id为test的元素t.style.display='没有任何';//隐藏选中的元素t.style.display='block';//以块级样式显示2:在元素的样式属性中设置visibilityvart=document.getElementById('test');t.style.visibility='隐藏';//隐藏元素t.style.visibility='visible';//显示元素两者的区别是显示隐藏后不占用原位置,隐藏可见性后仍占用元素位置获取text类型的input元素,监听change事件change事件调用displayTask动态插入html使用createElement创建元素使用append挂载元素监听双击事件functiondisplayTask(){//使用createElement创建元素constnewTaskItem=document.createElement('div');newTaskItem.className='新任务项';consthtml=`

${this.value}

`;newTaskItem.innerHTML=html;newTask.append(newTaskItem);//console.log(newTask);//console.log(html);this.value=''newTaskItem.addEventListener('dblclick',removeTask)}CSS部分:选中的选择器与兄弟组合器相邻:A+B组合器选择相邻的元素,即后一个元素B跟在前一个A之后,并共享同一个父节点添加删除线text-decoration:line-through;项目知识点DOM树DOM是一个文档对象模型,每个HTML标签都是一个对象。DOM将HTML表示为标签的树结构。标签称为元素节点(或简称为元素),并形成一个树结构:是根节点,和是它的子节点,等等。元素中的文本形成一个文本节点,标记为#text.一个文本节点只包含一个字符串。它没有孩子,永远是树的一片叶子。使用JS修改文档创建元素(DOM节点)document.createElement(tag)创建新元素节点(elementnode)document.createTextNode(text)创建文本节点创建div分为3步://1.创建
元素letdiv=document.createElement('div');//2.将元素的类设置为“alert”div.className=“alert”;//3.填充消息内容div.innerHTML="您好!您已阅读一条重要消息。";此时元素已创建。但到目前为止,它只是在一个名为div的变量中,还没有出现在页面上。所以我们在页面上是看不到的。appendelement为了让div显示出来,我们需要将它插入文档中的某个位置。附:文件。身体。附加(分区)。node.append(...nodesorstrings)-在节点末尾插入节点或字符串,node.prepend(...nodesorstrings)-在节点开头插入节点或字符串,node.before(...nodesorstrings)——在节点前插入节点或字符串,node.after(...nodesorstrings)——在节点后插入节点或字符串,node.replaceWith(...nodesorstrings)——将节点替换为给定的节点或字符串。JS30的第10个项目已经顺利完成。虽然对原项目做了一些改进,但整体上实现了一些自己独有的功能。PS:中间第7、9条略过,有时间以后补上!感谢阅读,如有任何问题,请联系我:1803105538@qq.com。