人工智能方向近期很热 自动化运维方向 JS DOM 节点操作、事件 JQuery 是在JS的基础上实现了一种封装、对象。 JS DOM---: 完成两个步骤:1、查找标签 document.getElementById(“idname”) //dom对象 document.getElementsByTagName(“tagname”) //dom对象的集合 document.getElementsByName(“name”) document.getElementsByClassName(“name”) 2导航查找 ---通过某一个标签定位到另一个标签的属性 parentElement //父节点标签元素 children // 所有子标签 firstElementChild // 第一个子标签元素 lastElementChild // 最后一个子标签元素 nextElementtSibling // 下一个兄弟标签元素 previousElementSibling // 上一个兄弟标签元素 2、操作标签 1文本操作 取值操作 DOM对象.innerText DOM对象.innerHTML 赋值操作 this.innerHTML="hello world" this.innerText="hello world" 实例: <p id="d1" class="c1">PPP</p> <p class="c1">PPP</p> <script> var ele_p=document.getElementById("d1"); //dom对象,on事件=function var eles_p=document.getElementsByClassName("c1"); ele_p.onclick=function () { alert(1234) } for (var i=0;i<eles_p.length;i++){ eles_p[i].onclick=function () { alert(1234) this 当前点击的标签 this.innerHTML="hello world"; this.innerText="hello"; } } 2属性操作 DHTML的简洁语法: console.log(DOM对象.属性); DOM对象.属性=值 原生JS: console.log(DOM对象.getAttribute("属性名")) DOM对象.setAttribute("属性名","值") 示例: <input type="text" id="inp" value="123"> <script> var ele_inp=document.getElementById("inp"); ele_inp.onclick=function () { this.value="hello"; console.log(this.value); //JS方法 console.log(this.setAttribute("value","666")) this.setAttribute("value","666"); } 3class属性操作 DOM对象.classList.add("hide"); DOM对象.classList.remove("c1"); 左侧菜单实例 <style> .hide{display:none} this.classList.add("hide"); this.classList.remove("c1") <input type="text" id="inp" value="123"> <script> var ele_inp=document.getElementById("inp"); ele_inp.onclick=function () { // this.value="hello"; // console.log(this.value); //JS方法 console.log(this.setAttribute("value","666")) // this.setAttribute("value","666"); this.classList.add("hide"); } 4CSS样式设置 DOM对象.style.样式属性名=样式值 this.style.color="red"; 样式操作 this.style.border="red 1px solid"; <input type="text" id="inp" value="123"> <script> var ele_inp=document.getElementById("inp"); ele_inp.onclick=function () { // this.value="hello"; // console.log(this.value); //JS方法 console.log(this.setAttribute("value","666")) // this.setAttribute("value","666"); // this.classList.add("hide"); this.style.color="red"; this.style.border="blue 1px solid"; } 5 获取value值 <select name="" id="s1"> <option value="1">河北省</option> <option value="2">河南省</option> <option value="3">山东省</option> </select> <script> var eles_s=document.getElementById("s1"); for (var i=0;i<eles_s.length;i++){ eles_s[i].onclick=function () { console.log(eles_s.value) } } value属性:input,select,textarea, <textarea id="c1"> 节点操作 1 创建节点 2 添加节点 3 删除节点 4 替换节点 节点就是一个个DOM对象 创建节点 document.createElement("a") 新增 父节点.appendChild() 删除 父节点.removeChild() 替换 父节点.replaceChild(新节点,被替换节点) 事件 用户行为不同:点击、悬浮 onclick 单击事件 ondblclick 双击事件 <div class="c1">DIV</div> <script> var ele=document.getElementsByClassName("c1")[0]; ele.onclick=function () { alert(123) } ele.ondblclick=function () { alert(123) } onload 事件 <script> window 窗口对象 window.onload=function () { var ele=document.getElementsByClassName("c1")[0]; alert(ele) } 示例: <head> <meta charset="UTF-8"> <title>Title</title> <script> window.onload=function () { var ele=document.getElementsByClassName("c1")[0]; alert(ele) } ; </script> </head> <body> <div class="c1">DIV</div> </body> 只有窗口对象执行完毕后,才会执行onload触发的内容。 onsubmit 事件 阻止默认事件发生:return false. 先alert(123)或验证内容,后提交事件。 示例: <form action="" id="form"> <p>用户名:<input type="text" name="user"></p> <input type="submit"> <!--//默认提交事件 {"user":"yuan"}传给action了--> <!--<input type="button" value="提交">--> </form> <script> var ele_form=document.getElementById("form"); ele_form.onsubmit=function (e) { //input标签内容拿到手 var inp=document.getElementsByName("user")[0]; var username=inp.value; alert(username); if (username.length>12 || username.length<5){ //阻止默认事件 // return false // 阻止默认事件 e.preventDefault(); } alert(123); }; 事件传播 <style> .outer{ 300px; height:300px; border:1px solid red; } .inner{ 100px; height:100px; backgroudcolor:blue; } <div class="outer"> <div class="inner"> </div> </div> <script> var outer=document.getElementsByClassName("outer")[0]; var inner=document.getElementsByClassName("inner")[0]; outer.onclick=function(e){ alert(1234) } inner.onclick=function (e) { //e=event事件对象 alert(888) //阻止事件传播 e.stopPropagation() } 单击inner部分先出888,后出1234。这种情况就是事件传播。 阻止事件传播:e.stopPropagation() onkeydown事件 按键就触发 <input type="text" id="inp"> <script> var ele=document.getElementById("inp"); ele.onkeydown=function (e) { // e 事件对象: 存的是与触发事件相关的具体信息 console.log(e.keyCode); if(e.keyCode==13){ alert(123) } } //e 时间对象:存的是与触发事件相关的具体信息。 QQ截图移动逻辑:鼠标在动,onmousedown事件,onmousemove事件 阻止默认事件方法二:e.preventDefalut(). onselect事件 var ele=document.getElementsByClassName("inp"); ele.onselect=function () { alert(123) } 选中文本才会触发 <input type="text" id="inp" value="123"> <script> var ele=document.getElementById("inp"); ele.onselect=function () { alert(123) }; onmouseover事件 鼠标悬浮 <style> .c1{ 200px; height:200px; backgroud-color:red; } <div class="c1">DIV <script> var ele=document.getElementsByClassName("c1")[0]; //鼠标悬浮触发事件 ele.onmouseover=function () { alert(1111) console.log(111) } //鼠标离开区域触发事件 onmouseleave事件 ele.onmouseleave=function () { alert(777) console.log(777) }
示例:模态动画框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .hide{display: none;} .back{ height:2000px; } .shade{ position:fixed; top:0; bottom:0; left:0; right:0; backgroud-color:green; opacity:0.4; } .model{ position:fixed; top:100px; left:50%; margin-left:-200px; 400px; height:250px; backgroud-color:white; } </style> </head> <body> <div class="back"> <button class="add">添加学员</button> <table border="1"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>班级</th> <th class="operate"> <button class="edit">编辑</button> <button class="del">删除</button> </th> </tr> </thead> <tbody id="tbody"> <tr> <td>liwj</td> <td>18</td> <td>python18</td> <td> <button class="edit">编辑</button> <button class="del">删除</button> </td> </tr> <tr class="t1"> <td>liwj2</td> <td>19</td> <td>python19</td> <td class="yangben"> <button class="edit">编辑</button> <button class="del">删除</button> </td> </tr> </tbody> </table> </div> <div class="shade hide"></div> <div class="model hide"> <form action=""> <p>姓名<input type="text" class="item"></p> <p>年龄<input type="text" class="item"></p> <p>班级<input type="text" class="item"></p> <p> <input type="button" value="提交" class="submit"> <input type="button" value="修改" class="mod"> <input type="button" value="取消" class="cancel"> </p> </form> </div> <script> //删除事件 var eles_del=document.getElementsByClassName("del"); var ele_tbody=document.getElementById("tbody"); for (var i=0;i<eles_del.length;i++){ eles_del[i].onclick=function () { ele_tbody.removeChild(this.parentElement.parentElement); } }; // model对话框 var ele_add=document.getElementsByClassName("add")[0]; var ele_cancel=document.getElementsByClassName("cancel")[0]; var ele_shade=document.getElementsByClassName("shade")[0]; var ele_model=document.getElementsByClassName("model")[0]; ele_add.onclick=function () { ele_shade.classList.remove("hide"); ele_model.classList.remove("hide") }; ele_shade.onclick=function () { ele_shade.classList.add("hide"); ele_model.classList.add("hide") }; //添加事件 var ele_submit=document.getElementsByClassName("submit")[0]; ele_submit.onclick=function () { var eles_input=ele_model.getElementsByClassName("item"); //创建节点 var ele_tr=document.createElement("tr"); for (var i=0;i<eles_input.length;i++){ var ele_td=document.createElement("td"); ele_td.innerHTML=eles_input[i].value; ele_tr.appendChild(ele_td); } var ele_th_oprate=document.getElementsByClassName("operate")[0].cloneNode(true); ele_tr.appendChild(ele_th_oprate); ele_tbody.appendChild(ele_tr); ele_shade.classList.add("hide"); ele_model.classList.add("hide") } //编辑替换事件 var eles_edit=document.getElementsByClassName("edit"); for (i=0;i<eles_edit.length;i++){ eles_edit[i].onclick=function () { ele_shade.classList.remove("hide"); ele_model.classList.remove("hide"); var ele_tr_old=this.parentElement.parentElement; var ele_mod=document.getElementsByClassName("mod")[0]; ele_mod.onclick=function () { //替换节点 var eles_input=ele_model.getElementsByClassName("item"); var ele_tr=document.createElement("tr"); for (var i=0;i<eles_input.length;i++){ var ele_td=document.createElement("td"); ele_td.innerHTML=eles_input[i].value; ele_tr.appendChild(ele_td); } var ele_th_oprate=document.getElementsByClassName("operate")[0].cloneNode(true); ele_tr.appendChild(ele_th_oprate); ele_tbody.replaceChild(ele_tr,ele_tr_old); ele_shade.classList.add("hide"); ele_model.classList.add("hide"); } } } </script> </body> </html>
JQuery JS网页动态操作,控制标签控制节点,实现动态效果。 只是封装了一些很繁琐的东西 write less,do more. 兼容性 选择器和操作 1 查找标签 选择器 实现 2 标签操作 yuan.js function add(x,y){ return x+y; } 引入js文件 head标签内<script src="yuan.js"></script> <script>add(2,3) jquery-3-1-1.js <script src="jquery-3-1-1.js"></script> <p id="d1">PPP <script> $("#d1")= jquery("#d1") $相当于jquery jquery拿到的一定是个集合 $("#d1").html()拿到文本内容 jquery选择器 引入js文件<script src="jquery-3-1-1.js"> <p class="c1">P1 <p class="c1">P2 <p class="c1" id="d1">P3 <script> //基本选择器 *所有 #id .class $("#d1").css("color","red") 操作P3 $(".c1").css("color",'red') 操作P1,P2,P3 $("p").css() P1,P2,P3 <div>DIV $("#d1,div").css() 组合查找 P3,DIV <div class="outer"> <div class="c2"> <div class="c3">DIV3 <p id="d2" class="c3">PPP //组合选择器 $(".outer .c3") 后代选择器 DIV3,PPP $(".outer>.c3") 子代 $(".outer+.c3") 毗邻 //基本筛选器 $(".c1:first") 取到第一个c1标签 $(".c1:last") $(".c1:eq(1)") 取到第二个c1标签 eq范围 even奇数 gt(1)大于 随心所欲选择 属性选择器 <div egon="dog">egon <div egon="dog" ale="dog2">egon $("[egon]").css() $("[egon="dog"]").css() $("[egon][alex]").css() 一个筛选不出来就再加一个 表单选择器 只适用于表单标签 <input type="text"> $("[type="text"]").value("hello") =$(":text").value("hello") 筛选器 过滤筛选器 $(".c1").eq(1).css() var i=3 eq(i)用于使用变量方式筛选 $(".c1").first().css() $("#d1").hasclass(c1) 有没有class值为c1的 返回true #用于if语句 查找筛选器 $("div").children(".text") <div> <p class="c1">P1 <p class="c1" id="d1">P2 <p class="c1">P3 <p class="c1">P4 <p class="c1" id="p6">P5 </div> <p class="c1">P7 //向下查找 $("#d1").nextAll().css() 拿到d1标签后面的所有兄弟标签 $("#d1").next().css() 下一个兄弟标签元素 $("#d1").nextUntil("#p6").css() 开区间 从d1到p6范围 //向上查找 $("#p6").prev().css() $("#p6").prevAll().css() $("#p6").prevUntil().css() //查找所有的兄弟标签 $("#d1").siblings().css() //find children 查找所有的孩子标签 $(".outer").children().length() 孩子的个数,子代非后代 console.log($(".outer").children().length()) $(".outer").children(".c3") .c3的子代 children找儿子,子代 find找后代,只能针对条件性地取 $(".outer").find(".c3") //找父标签 $("#d3").parent().css() 第一层父标签 $("#d3").parent().parent().css() 第二层父标签 $("#d3").parents().css() 所有父标签,一般使用不到 $("#d3").parentUntil(".outer").css() 开区间 标签操作 <script src="jquery-3-1-1.js"> 文本操作 <p id="p1">PPP <p class="c1">PPP1 <p class="c1">PPP2 <p class="c1">PPP3 <p class="c1">PPP4<a href="">click 事件绑定 <script> //DOM对象转换为Jquery对象 $(DOM对象) $("p").click(function () { alert(123) console.log($(this)); //取值操作 alert($(this).html()); 内容 alert($(this).text()); 文本 //赋值操作 $(this).html("hello world") $(this).text("hello world") $(this).text("<a>hello world</a>") $(this).html("<a href="">hello world</a>") 有超链接 }) //class操作 <script src="jquery-3-1-1.js"> <p class="c1">P1 <p class="c1">P2 <p class="c1">P3 $("p") $("p").addClass("c2") 添加标签c2 $("p").addClass("c3") 添加标签c3 有的话不会重复添加 $("p").removeClass("c3") 左侧菜单实例 <script> $(".title").click(function () { $(this).next().removeClass("hide"); $(this).parent().siblings().children(".con").addClass("hide"); }) <script>写成一行 $(".title").click(function () { //jquery支持链式操作 $(this).next().removeClass("hide").parent().siblings().children(".con").addClass("hide"); }) 一个作业: 表格操作,补上编辑。 编辑使用JS写 Jquery写表格的增删改 预习文档节点处理 https://6936986.html 表格增删改 $("")