第六届字节跳动青训营js实践项目 | 青训营

97 阅读5分钟

项目示例:待办事项列表应用

界面: 使用HTML和CSS创建一个用户友好的界面,包括输入框、添加按钮和待办事项列表。

 

html

Copy code

Todo List App   body {     font-family: Arial, sans-serif;   }   #todoInput {     width: 70%;     padding: 8px;   }   #addBtn {     padding: 8px 12px;     background-color: #4CAF50;     color: white;     border: none;   }   ul {     list-style-type: none;   }   li {     margin: 10px 0;     display: flex;     align-items: center;     justify-content: space-between;     padding: 5px;     border: 1px solid #ccc;   }   .completed {     text-decoration: line-through;   }   .actions {     display: flex;   }   .actions button {     margin-left: 5px;     padding: 2px 6px;     cursor: pointer;   }

Todo List App

  

  Add

    重难点分析:

     

    页面结构:在HTML中,我们创建了一个输入框和一个添加按钮,以及一个用于显示待办事项的无序列表(UL)。

     

    样式美化:使用CSS样式为页面元素添加了一些装饰,包括输入框、按钮和待办事项列表的样式。

    JavaScript 交互逻辑:当用户点击添加按钮时,我们获取输入框的值,创建一个新的待办事项列表项,并将其添加到列表中。

    createTodoItem 函数负责创建包含待办事项和操作按钮的列表项。

    添加按钮包括 "Complete"、"Edit" 和 "Delete" 按钮,每个按钮都附加了相应的事件处理函数。

    "Complete" 按钮将切换列表项的 "completed" 类,以便标记为已完成。

    "Edit" 按钮将允许用户编辑列表项的文本。

    "Delete" 按钮将从列表中删除该项。

     

    初学者建议:

    逐步实现: 从基本功能开始,逐步添加更复杂的功能,不要一开始就陷入复杂的逻辑。

    学习资源: 学习关于JavaScript事件、DOM操作和基本语法的教程,例如MDN Web Docs。

    练习: 尝试自己编写代码,多做练习,加深对JavaScript的理解和掌握。

    收获和体会:

    对于我自己来说,道格拉斯·克罗克福德的《JavaScript语言精粹》对我的帮助很大

    这本书是JS的经典之作之一。虽然这本书比较短,但它精深而扼要,适合初学者。这本书还可以帮助你更深入地了解JS语法,以及如何避免JS编写时常见的陷阱。

    对于js交互的理解:

    交互三步曲:找到对应的标签,添加事件,事件发生时的反馈

     

    2.1 获取标签

    通过id获取

    语法:document.getElementById("id名"):获取到的是一个唯一标签

    //1.通过id获取元素

    var oSs = document.getElementById("ss");

    //2.添加事件  标签.onclick = function(){  事件发生时要执行的操作  }

    oSs.onclick = function(){

        alert("easy");

    }

    通过标签名获取

    语法:

    document.getElementsByTagName("标签名") : 获取整个文档中对应标签名的标签

    父元素.getElementsByTagName("标签名") : 获取对应父元素中对应标签名的标签

    //3.通过标签名获取元素:document.getElementsByTagName("标签名")

    var oLis = document.getElementsByTagName("li");

    console.log(oLis); //HTMLCollection(5)  元素集合

    console.log(oLis.length); //5  获取元素集合的个数

    console.log(oLis[2]); //通过下标获取元素,下标从0开始

    //元素集合是一个整体,必须通过下标一个一个取出来使用

    oLis[2].onclick = function(){

        alert("hello world");

    }

    oLis[1].onclick = function(){

        alert("hello world");

    }

    2.2 添加事件

     

    事件:添加在标签上,可以被浏览器监听到的一些行为

     

    语法:标签.事件 = function(){ 事件触发时执行 的代码 }

     

    鼠标事件

     

    onclick:点击

     

    onmouseover/onmouseenter:鼠标移入(悬停)

     

    onmoueout/onmouseleave:鼠标移出

     

    onmousemove:鼠标移动

     

    onmouseup:鼠标抬起

     

    onmousedown:鼠标按下

     

    ondblclick : 双击

     

    oncontextmenu:右击

     

    //2.添加事件  标签.事件名 = function(){ 事件发生时执行的操作 }

    oDiv.onclick = function(){

        console.log("pink");

    }

     

    //2.onmouseover:鼠标移入

    oDiv.onmouseover = function(){

        console.log("鼠标移入");

    }

    2.3 js操作标签

     

    内容

    样式:height width

    2.3.1 操作标签内容

     

    标签内容:开始标签和结束标签中间的都是标签内容

     

    操作表单元素内容

     

    获取内容: var 变量 = 表单元素.value

     

    设置内容: 标签.value = "值"

     

    //2.给button添加点击事件

    oBtns[0].onclick = function(){

        //3.获取输入框的值  :var 变量 = 表单元素.value

        var v = oInp.value;

        console.log(v);

    }

    //4.设置

    oBtns[1].onclick = function(){

        // 设置内容: 标签.value = "值"

        oInp.value = "hello world";

    }

     

    //5.所有的表单元素都是  标签.value

    var v = oSel.value;

    console.log(v);

    操作闭合标签内容

     

    获取:var 变量 = 标签.innerHTML / 标签.innerText

     

    设置:标签.innerHTML / 标签.innerText = “值”

     

    innerHTML和innerText

     

    都是操作闭合标签内容,都会覆盖原有的内容

    innerHTML能识别标签,innerText不能识别标签

    /*

      获取:var 变量 = 标签.innerHTML  /  标签.innerText

      设置:标签.innerHTM  /  标签.innerText = “值”

     

      innerHTML:识别标签,覆盖原有的内容

      innerText:只操作文本不识别标签,覆盖原有的内容

    */

    //1.获取元素

    var oDiv = document.getElementsByTagName("div")[0];

     

    //2.获取标签内容

    var html = oDiv.innerHTML;

    console.log(html); //  

    代码之难,难于上青天

    var text = oDiv.innerText;

    console.log(text); // 代码之难,难于上青天

     

    //3.设置标签内容,覆盖原有内容

    //oDiv.innerHTML = "

    蚕丛及鱼凫,开国何茫然!

    ";

    //oDiv.innerText = "

    蚕丛及鱼凫,开国何茫然!

    ";

     

    //4.追加    之前的 + 现在的

    //oDiv.innerHTML = oDiv.innerHTML + "

    蚕丛及鱼凫,开国何茫然!

    ";

    oDiv.innerHTML += "

    蚕丛及鱼凫,开国何茫然!

    ";

    2.3.2 操作标签属性

     

    开始标签中的属性

     

    获取: var 变量 = 标签.属性名

     

    设置:标签.属性名 = 属性值

     

    特殊:class是关键字,不能直接使用,class---className

     

    //1.获取元素

    var oDiv = document.getElementsByTagName("div")[0];

     

    //2.获取 var 变量 = 标签.属性名

    var s = oDiv.title;

    console.log(s);

     

    //3.设置 标签.属性名 = 属性值

    oDiv.id = "haha";

     

    //4.设置class

    oDiv.className = "cur";

    2.3.3 操作标签样式

     

    写在style标签中,width,height,bg

     

    设置:标签.style.属性名 = 值

     

    特殊:js中不允许出现-,要使用驼峰标识

     

    //2.设置元素样式 : 标签.style.属性名 = 值  ,js操作标签样式都是行间

    //w:200,h:200,bg:green

    oDiv.style.width = "200px";

    oDiv.style.height = "200px";

    oDiv.style.background = "yellow";

     

    //特殊:js中不允许出现-,要使用驼峰标识

    oDiv.style.fontSize = "20px";

    cssText

     

    //1.获取元素

    var oDiv = document.getElementsByTagName("div")[0];

     

    //标签.style.cssText = "css样式"

    // oDiv.style.cssText = "width:200px;height:200px;background:green";

     

    //cssText重写style属性

    // oDiv.style.cssText = "width:200px;background:green";

    oDiv.style.width = "200px";

    oDiv.style.background = "green";