JS的Dom和事件处理机制( 二)
来源:互联网 发布:凡科能在mac上使用么 编辑:程序博客网 时间:2024/05/21 10:06
一、节点获取和访问关系
//parentNode父盒子 var box3 = document.getElementById("box3"); box3.parentNode.style.backgroundColor = "blue"; //兄弟节点(前一个和后一个:previousSibling和nextSibling) //previousElementSibling和nextElementSibling在IE678中不支持。IE678不能获取文本节点。// box3.previousElementSibling.style.backgroundColor = "red";// box3.nextElementSibling.style.backgroundColor = "yellow";// box3.previousSibling.style.backgroundColor = "red";// box3.nextSibling.style.backgroundColor = "yellow"; var pre = box3.previousElementSibling || box3.previousSibling; var net = box3.nextElementSibling || box3.nextSibling; pre.style.backgroundColor = "red"; net.style.backgroundColor = "yellow"; //单个子元素(firstChild和lastChild)// box3.parentNode.firstElementChild.style.backgroundColor = "orange";// box3.parentNode.lastElementChild.style.backgroundColor = "green"; var first = box3.parentNode.firstElementChild || box3.parentNode.firstChild; var last = box3.parentNode.lastElementChild || box3.parentNode.lastChild; first.style.backgroundColor = "orange"; last.style.backgroundColor = "green"; //所有子元素 var arr = box3.parentNode.children; for(var i=0;i<arr.length;i++){ arr[i].style.backgroundColor = "black"; } console.log(box3.parentNode.childNodes); var arr2 = box3.parentNode.childNodes; for(var i=0;i<arr2.length;i++){ if(arr2[i].nodeType === 1){ console.log(arr2[i]); } } //随意获取指定兄弟节点 var index = 0; var node = box3.parentNode.children[index]; //获取所有的兄弟节点 function siblings(elm) { var a = []; var p = elm.parentNode.children; for(var i =0;i<p.length;i++) { if(p[i] !== elm) { a.push(p[i]); } } return a; }
二、隔行变色
//需求:让tr各行变色,鼠标放入tr中,高亮显示。 //1.隔行变色。 var tbody = document.getElementById("target"); var trArr = tbody.children; //循环判断并各行赋值属性(背景色) for(var i=0;i<trArr.length;i++){ if(i%2!==0){ trArr[i].style.backgroundColor = "#a3a3a3"; }else{ trArr[i].style.backgroundColor = "#ccc"; } //鼠标进入高亮显示 //难点:鼠标移开的时候要回复原始颜色。 //计数器(进入tr之后,立刻记录颜色,然后移开的时候使用记录好的颜色) var color = ""; trArr[i].onmouseover = function () { //赋值颜色之前,先记录颜色 color = this.style.backgroundColor; this.style.backgroundColor = "#fff"; } trArr[i].onmouseout = function () { this.style.backgroundColor = color; } }
三、dom元素的创建
//第一种创建方式:document.write(); document.write("<li>我是document.write创建的</li>"); var btn = document.getElementsByTagName("button")[0]; var ul = document.getElementsByTagName("ul")[0]; // btn.onclick = function () { // document.write("<li>我是document.write创建的</li>"); // } //第二种:直接利用元素的innerHTNL方法。(innerText方法不识别标签) ul.innerHTML += "<li id='li1'>我是innerHTML创建的</li>" //第三种:利用dom的api创建元素 var newLi = document.createElement("li"); newLi.innerHTML = "我是createElement创建的";// console.log(newLi); //在父元素的最后面添加元素。// ul.appendChild(newLi); //指定位置添加 var li1 = document.getElementById("li1"); ul.insertBefore(newLi,li1);
四、百度搜索
//需求:输入内容(输入事件,键盘弹起事件),模拟服务器获取内容,创建ul,并在其中显示。 //步骤: //1.获取事件源 //2.绑定事件 //3.书写事件驱动程序 //1.获取事件源 //模拟服务器获取内容 var arr = ["a","ab","abc","abcd","aa","aaa"]; var box = document.getElementsByTagName("div")[0]; var inp = box.children[0];// var inp = document.getElementsByTagName("input")[0]; //2.绑定事件(输入内容(输入事件,键盘弹起事件)) inp.onkeyup = function () { //创建一个字符串,里面添加满了li和对应的内容。 var newArr = []; //我要从数组中查询以input中输入内容为开头的信息,然后添加到li中,转换成字符串。 //遍历老数组,然后判断每一项,哪项是以input内容为开头的穿件一个li,塞进去。 for(var i=0;i<arr.length;i++){ //判断当前项,是否已input内容为开头 //获取输入内容input标签的value属性值。 var val = this.value; if(arr[i].indexOf(val)===0){ newArr.push("<li>"+arr[i]+"</li>"); } } var str = newArr.join(""); //Bug1.每次创建新的ul之前,先删除旧的ul //只有ul存在我们才能删除ul// var aaa = box.getElementsByTagName("ul")[0]; if(box.children[2]){ //只要存在,那么就是object,object类型的数据,只要不是null,对应的boolean值都是true; box.removeChild(box.children[2]); } //Bug2.如果input中内容为空,那么久不能在生成ul了。 //如果input为空,那么切断函数 //Bug3.如果arr数组中没有以input为开头的元素。那么切断函数 //newArr的长度为0,就能证明以input内容为开头的元素,在arr中不存在 if(this.value.length === 0 || newArr.length === 0){ //切断函数(不在产生新的ul) return; } //3.书写事件驱动程序 var ul = document.createElement("ul"); //把创建好的内容添加到ul中。 ul.innerHTML = str; box.appendChild(ul); }
var div=document.getElementsByTagName("div")[0]; var timer = setInterval(fn,1); function fn(){ var nowtime = new Date(); var future = new Date("2016/09/05 18:23:15"); var timeSum = future.getTime() - nowtime.getTime(); var day = parseInt(timeSum/1000/60/60/24); var hour = parseInt(timeSum/1000/60/60%24); var minu = parseInt(timeSum/1000/60%60); var sec = parseInt(timeSum/1000%60); var millsec = parseInt(timeSum%1000); day=day<10?"0"+day:day; hour=hour<10?"0"+hour:hour; minu=minu<10?"0"+minu:minu; sec=sec<10?"0"+sec:sec; if(millsec<10){ millsec="00"+millsec; }else if(millsec<100){ millsec="0"+millsec; }//// console.log(day);// console.log(parseInt(timeSum/1000/60/60/24)); if(timeSum<0){ div.innerHTML="距离苹果发布会还有00天00小时00分00秒000毫秒"; clearInterval(timer); return; } div.innerHTML="距离苹果发布会还有"+day+"天"+hour+"小时"+minu+"分"+sec+"秒"+millsec+"毫秒"; }
阅读全文
0 0
- JS的Dom和事件处理机制( 二)
- JS的Dom和事件处理机制( 一)
- JS的Dom和事件处理机制(三)
- js--DOM(事件处理)
- JS DOM事件机制详解
- JS DOM事件处理程序
- 浅议Qt的事件处理机制 二
- 浅议Qt的事件处理机制 二
- 浅议Qt的事件处理机制 二
- DOM事件的处理
- DOM事件的处理
- js事件处理机制的理解
- Cocos2d-JS事件处理机制
- JS中事件处理机制
- Cocos2d-JS 事件处理机制
- Cocos2d-js 事件处理机制
- JS:事件鼠标处理机制
- Android的事件处理机制和滑动
- 映射表类(CMap)
- 揭秘家用路由器0day漏洞挖掘技术读书笔记 D-Link DIR-505 my_cgi.cgi溢出漏洞分析
- MySql根据条件分组,然后将某些字段进行拼接
- javascript二三事
- PHP $cuserLogin->keepUser()问题 userlogin.class.php
- JS的Dom和事件处理机制( 二)
- mac下YOLO中文标签实现
- Cookie, LocalStorage 与 SessionStorage
- 求n的阶层中含有某个因子个数的方法
- Spring Security中在Controller中获得用户信息
- Html5和Css3的基础标签及常用属性
- 求1~n中0~9出现的次数
- Light Bulb
- 基础知识_数码管动态显示,矩阵键盘