三.BOM编程
1、访问页面元素的三种方式
1.1.getElementById 通过id找到元素
1.2.getElementsByName 通过名字找一堆元素 返回数组
1.3.getElementsByTagName 通过标签名找到一堆元素 返回数组
2、控制元素的显示和隐藏 xx.style.display="none/block" 隐藏/显示
案例③树型菜单
<!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>树型菜单</title> <style> li{list-style: none;}/*去点*/ a{text-decoration: none;}/*去除下划线*/ a:link{color: chartreuse;}/*未访问*/ a:hover{color: pink;}/*鼠标移上*/ </style> <script> function myf(id){ //根据id拿到ul块 let bb=document.getElementById(id); //如果之前是隐藏的 if(bb.style.display=="none"){ //让其显示 bb.style.display="block"; } else{//如果它是显示的 就隐藏 bb.style.display="none"; } } </script> </head> <body> <div> <li><a href="javascript:myf('aa')">美女群</a></li> <ul style="display: none;" id="aa"> <li>瑶瑶</li> <li>欣欣</li> <li>(宝ᴗ宝)</li> </ul> <li><a href="javasrcipt:myf('cc')">帅哥群</a></li> <ul style="display: none;" id="cc"> <li>小红花</li> <li>懒洋洋</li> <li>小灰灰</li> </ul> </div> </body> </html>
四.DOM编程
一.操作节点( 增删改查 )
- 查 firstChild lastChild childNodes(子节点们) getAttribute() 根据属性名拿到属性值 setAttribute() 给指定属性名设置属性值
- 增 createElement
- 删 removeChild
- 改 replaceChild
- 复制 cloneNode
- 位置 insertBefore 插入到...之前 appendChild 追加到最后
二.动态操作表格(注意层级关系)
一.行 row
1.tab.insertRow(位置)
2.tab.deleteRow(行下标)
3.row.rowIndex 拿到其行下标
4.tab.rows 拿到所有的行
二.列 cell
- row.insertCell(下标)
- c0.innerHTML=""
- row.deleteCell()
- row.cells 拿到所有的列
案例④掌握节点的增删改查
<!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>节点的增删改查</title> <script> function myc(){//查看 //根据id找到图片 let myi=document.getElementById("aa"); //根据属性名得到属性值 // let mpath=myi.getAttribute("src");//拿到图片路径 // let mwidth=myi.getAttribute("width"); // alert(mwidth); // alert(mpath); } function myz(){//增加 //根据id找图片 let myi=document.getElementById("aa"); //创建图片节点 let newImg=document.createElement("img"); //给图片赋值 src width newImg.setAttribute("src","img/照片.jpg"); newImg.setAttribute("width","300px"); //把该图片插入到myi的前面 document.body.insertBefore(newImg,myi); } function myf(){//克隆 //根据id找到图片 let myi=document.getElementById("aa"); //克隆节点 是否连同子节点一同克隆 let copyImg=myi.cloneNode(false); 追加到文档的最后面 document.body.appendChild(copyImg); } function myq(){//删除 //根据id找到图片 let myi=document.getElementById("aa"); //移除掉 document.body.removeChild(myi); } function myt(){ //根据id找图片 let oldImg=document.getElementById("aa"); //创建新的图片节点 let newImg=document.createElement("img"); //给该节点设置路径和宽度 newImg.setAttribute("src","img/壁纸01.jpeg"); newImg.setAttribute("width","300px"); //用新的节点去替换旧的节点 document.body.replaceChild(newImg,oldImg); } </script> </head> <body> <img src="img/1111.jpg" width="200px" id="aa"/> <input type="button" value="查看" onclick="myc()" /> <input type="button" value="增加" onclick="myz()"/> <input type="button" value="克隆" onclick="myf()"/> <input type="button" value="删除" onclick="myq()"/> <input type="button" value="替换" onclick="myt()"/> </body> </html>
五.JavaScript和CSS的交互
一.两种方式实现交互
- className属性方式
- style属性方式
二.随鼠标滚动的广告图片
- scrollLeft/scrollTop
案例⑤制作随鼠标滚动的广告图片
<!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> <!-- position:fixed 让图片滚动!!! --> <div style="position:fixed"> <img src="img/壁纸1.png" width="100px"/> </div> <div> <img src="img/壁纸2.jpeg" width="200px"/> </div> <div> <img src="img/壁纸3.png" width="300px"/> </div> <div> <img src="img/壁纸4.jpg" width="300px"/> </div> <div> <img src="img/壁纸5.jpeg" width="300px"/> </div> </body> </html>
案例⑥实现表格的高亮效果
<!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>实现表格的高亮效果</title> <style> /* 第一种方式 */ .aa{ background-color: aquamarine; } .bb{} </style> <script> // //第二种方式 // window.onload=function( ){ // //一次性拿到所有标签 // let ts = document.getElementsByTagName("tr"); // //遍历 // for(let i=0;i<ts.length;i++){ // // ts[i] 每一行 // ts[i].onmouseover=function( ){ // this.style.backgroundColor="pink"; // } // ts[i].onmouseout=function( ){ // this.style.backgroundColor="white"; // } // } // } window.onload=function( ){ //一次性拿到所有标签 let ts=document.getElementsByTagName("tr"); //遍历 for(let i =0;i<ts.length;i++){ //ts[i] ts[i].onmouseenter=function(){ this.style.backgroundColor="pink"; } ts[i].onmouseout=function(){ this.style.backgroundColor="yellow"; } } } </script> </head> <body> <!-- 第一种方式: className js和Css交互 this:当前这一行--> <!-- <tr onmouseover="thisq.className='aa'" onmouseout="this.className='bb'"> --> <table border="1px" width="400px"> <tr > <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table> </body> </html>
六.表单验证
一.String的诸多方法
- length 长度
- charAt() 指定下标的字符
- substring/substr 截取
- indexOf 找元素第一次出现的位置
二.正则表达式
- /^正则$/
- test()
三.提示两种方式
- alert()
- 右侧显示 失焦 onblur() 获得焦点 onfocus() 表单提交事件 onsubmit() return
七.省市级联&数组的遍历
- onchange下拉框的改变事件
- add(new Option(text,value))
- 二维数组的遍历
案例⑦省级联动
var cityList = new Array(); cityList['北京市'] = ['朝阳区', '东城区', '西城区', '海淀区', '宣武区', '丰台区', '怀柔', '延庆', '房山']; cityList['上海市'] = ['宝山区', '长宁区', '丰贤区', '虹口区', '黄浦区', '青浦区', '南汇区', '徐汇区', '卢湾区']; cityList['广州省'] = ['广州市', '惠州市', '汕头市', '珠海市', '佛山市', '中山市', '东莞市']; cityList['深圳市'] = ['福田区', '罗湖区', '盐田区', '宝安区', '龙岗区', '南山区', '深圳周边']; cityList['重庆市'] = ['俞中区', '南岸区', '江北区', '沙坪坝区', '九龙坡区', '渝北区', '大渡口区', '北碚区']; cityList['天津市'] = ['和平区', '河西区', '南开区', '河北区', '河东区', '红桥区', '塘古区', '开发区']; cityList['江苏省'] = ['南京市', '苏州市', '无锡市']; cityList['浙江省'] = ['杭州市', '宁波市', '温州市']; cityList['四川省'] = ['四川省', '成都市']; cityList['海南省'] = ['海口市']; cityList['福建省'] = ['福州市', '厦门市', '泉州市', '漳州市']; cityList['山东省'] = ['济南市', '青岛市', '烟台市']; cityList['江西省'] = ['江西省', '南昌市']; cityList['广西省'] = ['柳州市', '南宁市']; cityList['安徽省'] = ['安徽省', '合肥市']; cityList['河北省'] = ['邯郸市', '石家庄市']; cityList['河南省'] = ['郑州市', '洛阳市']; cityList['湖北省'] = ['武汉市', '宜昌市']; cityList['湖南省'] = ['湖南省', '长沙市']; cityList['陕西省'] = ['陕西省', '西安市']; cityList['山西省'] = ['山西省', '太原市']; cityList['黑龙江省'] = ['黑龙江省', '哈尔滨市']; cityList['其他'] = ['其他']; //验证地区 二级联动 //初始化省份下拉框的数据 let initSf = () => { //获取省份下拉框的id let sf = $("province"); //循环数组cityList element:不能代表每一个省份 下标才能代表省份 i代表下标 for (i in cityList) { sf.add(new Option(i)); } }; //改变城市下拉框的数据 let changeCs = () => { let f = false; //获取城市下拉框的id let cs = $("city"); //清除城市下拉框里面原来的数据 cs.length = 0; //获取所选择省份的id下拉框的内容值 let sf = $("province").value; //给城市下拉框添加数据 for (i in cityList) {// i 代表省份 if (i === sf) {//确定所选择的省份 所选择的内容和文本框的一致 f = true; for (j in cityList[i]) {// cityList[i] 每一个省份所对应的城市数组 j代表城市数组的下标 //给城市下拉框添加数据 new Option: cs.add(new Option(cityList[i][j]));// cityList[i][j] 城市数组的每一个值 } } } if (f === false) { cs.add(new Option('--请选择城市--')); } }