#### 11.8.3 BOM的系统对话框 bom的系统对话框: - window.alert("liujia") 直接在页面中弹出对话框 - window.confirm("你确定要删除文件吗?") 弹出是否眼删除文件,并且有确定和取消按钮 - window.prompt("今天的天气是?") 会弹出对话框让你输入内容 定时器方法 ```html <script type='text/javascript'> //1.在5秒之后执行对应的操作,可以做异步 window.setTimeout(function(){ console.log("111"); },2000) console.log("222") //2周期性定时器 var num = 0; var timer = null; //开启定时器 timer = window.setInterval(function{ num++; if(num === 0){ clearInterval(timer); //清除定时器 } console.log(num); },2000) </script> ``` #### 11.8.4 DOM D:docunment文档 O:object M;modle 获取节点的是三种方法: - var box = document.getElementById("box") 通过id获取单个节点对象 - var box = document.getElementsByTagName('div') 通过标签名来获取节点对象 - var lis2 = document.getElementsByClassName("active"); 通过类名来过去 对样式的操作: 1 获取事件源对象 - var box = document.getElementById('box'): 2.绑定事件并执行更改 - box.onmpuseover = function(){box.style.backgroundColor = 'red'} 对属性的操作: 1.获取事件的节点 - var p1 = document.getElementById('id'); 2.设置属性 - console.log(p1.getAttribute('class')) 必须要获取属性 - p1.setAttribute('class',123) 如果原来存在class就对它进行更改,如果不存在就进行添加 节点的创建删除: 创建节点: - var li1 = document.createElement('li') 创建节点 - li1.innerText = 'liujia' 在节点中添加内容,但只能设置文本 - li1,innerHTML = ‘<a href="#"></a>’; 可以设置html - ll1.setAttribute("class","avtive"); - li1.children[0].style.color = 'red'; 便利数据操作页面: ```html <script> var box = document.getElementById('box'); var date = [ {id:1,name:'小米2',subname:"前置双摄",price:1999} {id:1,name:'小米4',subname:"前置双摄",price:2999} {id:1,name:'小米5',subname:"前置双摄",price:3999} {id:1,name:'小米6',subname:"前置双摄",price:4999} {id:1,name:'小米8',subname:"前置双摄",price:5999} ] for (var i=0;i<data.length;i++){ var li = document.creatElement('li'); li.innerHTML = `<p class='name'>${data[i].name}</p> <p class="subname">${data[i].subname}</p> <span class="sprice">${data[i].price]元<span>` box.appendChild(li ) } </script> ``` 切换图片: ```html <body> <div id = "box"> <img src="images/1.jpg" alt="" id="imgbox"> </div> <button id = "prev">上一张</button> <button id = "next">下一张</button> </body> <script> var imgbox = document.getElementById('imgbox'); var next = document.getElementById('next'); var prev = cocument.getElementById('prev'); var num = 1; next.onclick = function(){ nextImg(); } function nextImg(){ num++; if(num === 5){ num = 1; } imgbox.src=`images/$[num}.jpg`; } setInterval(nextImg,100) prev.onclick=function(){ prevImg(); } function prevImg(){ num = 5; num -= 1; if(num === 0){ num=5 } imbox.src=`images/${num}.jpg` } setInterval(prevImg,100) </script> ``` 函数对象中,可以通过那两个方法改变函数内部this的指向 ```html function fn(){ console.log(this); //this指向了window } fn.call(); fn.apply(); ``` 如何设置节点对象的样式、属性、类? ```html 设置样式 obj.style 设置属性: obj.setAttribute(name,value); obj.getAttribute(name); obj.className obj.title ``` 节点对象的创建,添加,删除分别用什么方法? ```html var op = document.creatElement('p'); box.appendChild(op); box.insertBefore(newNode,oldNode); box.removeChild(op); ``` l列出你所知道的js事件? - onclick - onmouseover - onmouseout - onchange - onselect - onsubmit - onload 定时的方法有那两个?写出对应的方法,并说明含义? setTimeout(callback,毫秒)一次性任务,延迟操作,异步 setInterval(callback,毫秒)周期性循环任务 动画 css transtion tranform