DOM—分时问候并显示不同图片案例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> img { width: 300px; } </style></head><body> <img src="/img/img/x.gif" alt=""> <div>上午好</div> <script> // 根据系统不同时间来判断,所以需要用到日期内置对象Date // 利用多分支语句来设置不同的图片 // 需要一个图片,并且根据时间修改图片,就需要用到操作元素src属性 // 需要一个div元素,显示不同问候语,修改元素内容即可 //1.获取元素 var img = document.querySelector('img') var div = document.querySelector('div') //2.获得当前小时数 var date = new Date() var h = date.getHours() //3.判断小时数来修改图片和文字信息 if(h < 12){ img.src = "/img/img/x.gif" div.innerHTML ='上午好' }else if(h < 18){ img.src = "/img/img/x.gif" div.innerHTML = '下午好' }else{ img.src = "/img/img/x.gif" div.innerHTML = '晚上好' } </script></body></html>
DOM—操作属性控制电灯开关
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <img src="/img/off.gif" alt=""> <script> //1--获取img元素对象 var img = document.querySelector('img') //定义一个标记变量 var flag = false //灯灭了,false代表灯是灭的,跟灯的状态保持一致 /* 2--调用方法操作元素的属性 light.src = '/img/on.gif' //设置src的属性的值 var str = light.src //获取src属性的值 console.log(str);//http://127.0.0.1:5500/img/on.gif */ //2--绑定事件 img.onclick = function(){ if(flag == false){ img.src = "/img/on.gif" flag = true //灯亮了,将flag设置为true }else{ img.src = "/img/off.gif" flag = false //灯灭了,将flag设置为false } } </script></body></html>
DOM—仿京东搜索框案例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> input { color: #999; } </style></head><body> <input type="text" value="婴幼儿奶粉"> <script> // 需求: // 文本框获得焦点时, 文字颜色变浅, 文本框的内容清空 // 文本框失去焦点时, 颜色恢复, 文本框为空时, 提示内容 //获得文本框 var text = document.querySelector('input') //添加获得焦点事 text.onfocus = function(){ /* console.log('获得焦点'); */ text.style.color='#333' if(text.value='婴幼儿奶粉') text.value='' } //添加失去焦点 text.onblur = function(){ /* console.log('失去焦点'); */ text.style.color='#999' if(text.value ==''){ text.value='婴幼儿奶粉' } } </script></body></html>
DOM—书架案例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <!--这本书名为<<abc>>,zhangsan编著的书,折扣为:0.8折,折扣后价格为:96--></head><body> 书名:<input type="text" id="bookname" name="bookname" ><br/> 作者:<input type="text" id="bookauthor" name="bookauthor" ><br/> 价格:<input type="text" id="bookprice" name="bookprice" ><br/> 折扣:<input type="text" id="booksale" name="booksale" ><br/> <input type="button" id="totalBtn" value="计算折扣价"> <script> //获取计算折扣的按钮对象 var btn = document.getElementById("totalBtn"); //添加点击事件 btn.onclick = function () { //获取文本框里面的值 //方法一:通过id /*var bookname = document.getElementById("bookname").value; var bookauthor = document.getElementById("bookauthor").value; var bookprice = document.getElementById("bookprice").value; var booksale = document.getElementById("booksale").value;*/ //方法二:通过TagName /* var bookname = document.getElementsByTagName("input")[0].value; var bookauthor = document.getElementsByTagName("input")[1].value; var bookprice = document.getElementsByTagName("input")[2].value; var booksale = document.getElementsByTagName("input")[3].value; */ //方法三:querySelector() var bookname = document.querySelector("#bookname").value; var bookauthor = document.querySelector("#bookauthor").value; var bookprice = document.querySelector("#bookprice").value; var booksale = document.querySelector("#booksale").value; //计算 var price = bookprice * booksale; //拼接 var s = "这本书名为<<"+bookname+">>,"+bookauthor+"编著的书,折扣为:"+booksale+"折,折扣后价格为:"+price; //弹出 alert(s) } </script></body></html>
DOM—留言板
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> * { margin: 0; padding: 0; } body { padding: 100px; } textarea { width: 200px; height: 100px; border: 1px solid skyblue; outline: none; resize: none; } ul { margin-top: 40px; } li { width: 300px; margin: 10px 0; background-color: blueviolet; color: #fff; } </style> </head> <body> <textarea></textarea> <button>发布</button> <ul></ul> <script> //提示会用到createElement方法 和 insertBefore方法 //创建一个元素对象 var ul = document.createElement('ul') //获取DOM元素对象 var textarea= document.querySelector('textarea') var button= document.querySelector('button') var ul= document.querySelector('ul') //给btn添加点击事件 button.addEventListener('click',function(){ //判断:如果文本域中没有内容,弹出提示框并结束代码 if(textarea.value == ''){ alert('请输入内容') return//结束内容 } //创建ul元素 var li = document.createElement('li') //将文本域中的内容赋给li元素 li.innerHTML = textarea.value //将li添加到ul中 //ul.appendChild(li)//在父级元素的子元素后面追加元素 ul.insertBefore(li,ul.children[0])//在父级元素的子元素前面 //每次添加结束之后清空文本域中的内容 textarea.value='' }) </script> </body></html>
BOM—发送短信
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> 手机号: <input class="ipt" type="text" /> <button class="btn">发送</button> <script> //获得 var ipt = document.querySelector('.ipt') var btn = document.querySelector('.btn') //定义一个计数器 var count = 3 //添焦 btn.addEventListener('click',function(){ //1.禁用按钮 btn.disabled = true //2.启动定时器 var timer = setInterval(function(){ //4.当count的值减到0的时候,结束定时,恢复按钮的状态 if(count<=0){ clearInterval(timer) btn.disabled=false btn.innerHTML='发送' count=3 return } //3.倒计时时间显示在按钮上 btn.innerHTML = count +'秒重试' count-- },1000) }) </script> </body></html>
BOM—5秒后自动跳转页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自动跳转</title> <style> p{ text-align: center; } span{ color:red; } </style></head><body> <p> <span id="time">5</span>秒之后,自动跳转到首页... </p> <script> /* 分析: 1.倒计时读秒效果实现 1.1 定义一个方法,获取span标签,修改span标签体内容,时间-- 1.2 定义一个定时器,1秒执行一次该方法 2.在方法中判断时间如果<= 0 ,则跳转到首页 */ var second = 5 function showTime(){ second--; //判断 if(second<=0){ location.href='http://taobao.com' } //获取span标签 var time = document.querySelector('#time') time.innerHTML=second } setInterval(showTime,1000) </script></body></html>
DOM—动态表格
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>动态表格</title> <style> table{ border: 1px solid; margin: auto; width: 500px; } td,th{ text-align: center; border: 1px solid; } div{ text-align: center; margin: 50px; } </style></head><body><div> <input type="text" id="name" placeholder="请输入姓名" autocomplete="off"> <input type="text" id="age" placeholder="请输入年龄" autocomplete="off"> <input type="button" value="添加" id="add"></div> <table id="tb"> <caption>学生信息表</caption> <tr> <th>姓名</th> <th>年龄</th> <th>操作</th> </tr> <tr> <td>张三</td> <td>23</td> <td><a href="JavaScript:void(0);" onclick="drop(this)">删除</a></td> </tr> <tr> <td>李四</td> <td>24</td> <td><a href="JavaScript:void(0);" onclick="drop(this)">删除</a></td> </tr> </table></body><script> //一、添加功能 //1.为添加按钮绑定单击事件 document.getElementById("add").onclick = function(){ //2.创建行元素 let tr = document.createElement("tr"); //3.创建3个单元格元素 let nameTd = document.createElement("td"); let ageTd = document.createElement("td"); let deleteTd = document.createElement("td"); //4.将td添加到tr中 tr.appendChild(nameTd); tr.appendChild(ageTd); tr.appendChild(deleteTd); //5.获取输入框的文本信息 let name = document.getElementById("name").value; let age = document.getElementById("age").value; //6.将2个文本元素添加到td中 nameTd.innerHTML=name; ageTd.innerHTML=age; //8.创建超链接元素和显示的文本以及添加href属性 let a = document.createElement("a"); a.setAttribute("href","JavaScript:void(0);"); a.setAttribute("onclick","drop(this)"); a.innerHTML='删除'; //9.将超链接元素添加到td中 deleteTd.appendChild(a); //10.获取table元素,将tr添加到table中 let table = document.getElementById("tb"); table.appendChild(tr); } //二、删除的功能 //1.为每个删除超链接标签添加单击事件的属性 //2.定义删除的方法 function drop(obj){ //3.获取table元素 let table = obj.parentElement.parentElement.parentElement; //4.获取tr元素 let tr = obj.parentElement.parentElement; //5.通过table删除tr table.removeChild(tr); }</script></html>
BOM—抽奖案例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <span id="layer">000000</span> <input id="btn" type="button" value='生成随机数'/> <script> //生成随机数 范围是 [100000-999999] //Math.floor(Math.random()*(max-min + 1)) + min; //999999-100000=899999+1=900000 /*var num = Math.floor(Math.random()*(900000)) + 100000; alert(num)*/ /* 1,定义一个方法,不断的修改span的标签体的值 2,获取按钮对象,添加点击事件 3,在事件中,点击开启定时,再点击关闭定时 */ //定义一个方法,不断的修改span的标签体的值 function startRoll() { //获取span标签对象 var span = document.getElementById("layer"); //修改标签体的值 span.innerHTML = Math.floor(Math.random()*(900000)) + 100000; } //获取按钮对象 var btn = document.getElementById("btn"); //设置标记,来切换 var flag = false; //定义变量,保存定时器的id var id; //添加点击事件 btn.onclick = function () { if (flag){ //关闭定时 clearInterval(id); flag = false; }else { //启动定时 id = setInterval("startRoll()",10) flag = true; } } </script></body></html>
offset动画固定缓慢向右移动原理
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> div{ width: 150px; height: 150px; background-color: red; position: absolute; } </style></head><body> <div></div> <script> //1--获得盒子当前位置 //2--让盒子在当前位置上+1个移动距离 //3--利用定时器不断重复操作 //4--加一个结束定时器的条件 //5--element.style.left需要添加定位才能实现功能 var div = document.querySelector('div') var timer = setInterval(function(){ if(div.offsetLeft >= 400){ clearInterval(timer); } div.style.left = div.offsetLeft + 1 +'px'; },30); </script></body></html>