1、dom.html
nl<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> <script> console.log(document); //整个页面 console.log(document.documentElement); //html标签 console.log(document.body); //body标签 </script> </html>2.获取页面元素.html
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div>1</div> <div>2</div> <div>3</div> <div id="four">4</div> <div id="box"> <div>哈哈</div> <div>呵呵</div> </div> <script> // 批量获取页面上指定的标签 // getElementsByTagName('标签名') //通过标签名获取多个元素 返回一个伪数组 包含了符合条件的所有元素 // var result = document.getElementsByTagName('div'); // console.log(result); // console.log(result[3]); // var result = document.getElementsByTagName('span'); //如果找不到就返回一个空的伪数组 // console.log(result); // 获取指定的元素 // getElementById('id名') //通过id获取元素 返回的就是那个对应的元素 // var result = document.getElementById('four'); // console.log(result); // var result1 = document.getElementById('one'); //如果找不到返回的是null // console.log(result1); // console.log(document.getElementsByTagName('div')); //在整个页面的范围内找 // var box = document.getElementById('box'); // console.log(box.getElementsByTagName('div')); //在元素的范围中去找 // 总结: // 批量获取 : document/element.getElementsByTagName('标签名') 返回一个伪数组,如果找不到返回空的伪数组 // 通过id获取: document.getElementById('id名') 返回具体的元素, 找不到返回null </script> </body> </html>3、事件
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> <style> div{ width: 100px; height: 100px; background-color: red; } </style> </head> <body> <div id="box"></div> <script> //需求: 点击div,alert一句话 //1. 获取div var box = document.getElementById('box'); //2. 注册事件 // box.onclick = function(){ // alert('box被点击了'); // } // 注册事件的语法: 元素.on + 事件名 = 函数; // 事件的三要素: // 事件源 : 给谁注册事件,谁就是事件源 // 事件名 : 要注册什么事件,那个事件名就是什么 点击事件的事件名是: click // 事件处理函数 : 事件触发的时候会被调用的函数 </script> </body> </html>4、点击切换图片
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <button id="btn">点击切换图片</button> <br> <img id="img" src="images/a.jpg" alt="图片" width="500" height="350"> </body> </html> <script> //需求: 点击btn按钮,点击的时候切换图片 //1. 获取元素btn,img var btn = document.getElementById('btn'); var img = document.getElementById('img'); // 2. 给btn注册点击事件 btn.onclick = function(){ // 3. 在事件处理函数中,修改img图片(修改img的src属性的值) // console.log(img.src); //注意返回的是绝对路径 img.src = 'images/b.jpg'; } </script>5、点击回来切换图片
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--<button id="btn">点击切换图片</button>--> <a href="" id="btn"> 点击来回切换图片</a> <br> <img id="img" src="images/a.jpg" alt="图片" width="500" height="350"> </body> </html> <script> //需求: 点击btn按钮,点击的时候来回切换图片 //1. 获取元素btn,img var btn = document.getElementById('btn'); var img = document.getElementById('img'); var flag = true;// 默认展示的是a.jpg, flag为true的时候,表示当前展示的是a.jpg //如果flag是false,就代表当前展示的是b.jpg // 2. 给btn注册点击事件 btn.onclick = function(){ // 3. 在事件处理函数中,修改img图片(修改img的src属性的值) console.log(img.src); //注意返回的是绝对路径 // 判断如果是a.jpg就切换到b.jpg,否则就换回a.jpg if(flag){ //证明当前展示的a.jpg img.src = 'images/b.jpg'; flag = false; //图片发生变化,flag也要跟着改变状态 }else{ //证明当前展示的是b.jpg img.src = 'images/a.jpg'; flag = true; } return false; } </script>6、给a标签注册点击事件
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--a标签默认行为 : 页面跳转--> <a href="" id="link">点击在控制台打印一句话</a> <script> var link = document.getElementById('link'); //由于a标签的超链接功能,导致事件触发之后,还会默认刷新页面/跳转页面,我们不能到达我们最终的目的 link.onclick = function(){ console.log('a被点击了'); return false; //在事件处理函数的最后一行,写一个return false,就可以组织a的默认行为 } </script> </body> </html>7、操作元素的属性
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id='box'> 哈哈哈哈哈 <span>span的文本</span> </div> <!--<img src="images/1.jpg" alt="" title="哈哈" id="img">--> <input type="text" value='哈哈哈'> <script> var img = document.getElementById('img'); // console.log(img.src); // console.log(img.title); // console.log(img.id); // // img.src = 'images/2.jpg'; // img.title = '呵呵'; // img.id = 'img1111' // innerText 获取/操作元素里面的文本 // innerHTML 获取/操作元素里面的内容 (会识别html标签) // 共同点: 都会覆盖原来的内容 // 注意: innerText , innerHTML 一般用来操作双标签 // var box = document.getElementById('box'); // console.log(box.innerText); //返回元素里面所有的文本 // console.log(box.innerHTML); //返回元素里面所有的内容 // box.innerText = '我是动态加的内容<p>p的内容</p>'; //不会识别标签 // box.innerHTML = '我是动态加的内容<p>p的内容</p>'; //会识别标签,把标签直接渲染出来 // var input = document.getElementsByTagName('input'); // console.log(input[0].innerText); // console.log(input[0].innerHTML); // console.log(input[0].value); </script> </body> </html>8、美女相册
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> body { font-family: "Helvetica","Arial",serif; color: #333; background-color: #ccc; margin: 1em 10%; } h1 { color: #333; background-color: transparent; } a { color: #c60; background-color: transparent; font-weight: bold; text-decoration: none; } ul { padding: 0; } li { float: left; padding: 1em; list-style: none; } #imagegallery { } #imagegallery a { margin: 0px 20px 20px 0px; padding: 0px; display: inline; } #imagegallery a img { border: 0; } </style> </head> <body> <h2> 美女画廊 </h2> <div id="imagegallery"> <a href="images/1.jpg" title="美女A"> <img src="images/1-small.jpg" width="100px" alt="美女1" /> </a> <a href="images/2.jpg" title="美女B"> <img src="images/2-small.jpg" width="100px" alt="美女2" /> </a> <a href="images/3.jpg" title="美女C"> <img src="images/3-small.jpg" width="100px" alt="美女3" /> </a> <a href="images/4.jpg" title="美女D"> <img src="images/4-small.jpg" width="100px" alt="美女4" /> </a> </div> <div style="clear:both"></div> <img id="image" src="images/placeholder.png" alt="" width="450px" /> <p id="des">选择一个图片</p> </body> </html> <script> //需求: 点击小图,修改大图和对应的文本 // 给每一个a注册点击事件,在事件处理函数中,获取到当前a的href的值和title的值.分别赋值给img的src 和 p的innerText // 1. 获取元素 var imagegallery = document.getElementById('imagegallery'); var links = imagegallery.getElementsByTagName('a'); var image = document.getElementById('image'); var des = document.getElementById('des'); // 2. 给每一个a注册点击事件 // links[0].onclick = function(){} // links[1].onclick = function(){} // links[2].onclick = function(){} // links[3].onclick = function(){} for(var i = 0; i < links.length; i++) { links[i].onclick = function(){ // 3. 在事件处理函数中,获取到当前点击的a,然后拿到href 和title,再去赋值 // console.log(links[i]); // console.log(this); //指向我们点击的事件源 // console.log(this.href); // // console.log(this.title); // image.src = this.href; des.innerText = this.title; return false;//阻止a的默认行为 } } </script>9、总结
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> // DOM: 把页面上的标签抽象成对象,在js中通过操作对象,实现操作页面上标签的目的 // 元素: 在html中<div>叫标签, 在DOM中,称之为元素 // 获取元素: // document/element.getElementsByTagName('标签名') 返回一个伪数组 ,如果找不到返回空的 // 伪数组 // document.getElementById('id名') 返回符合条件的那个元素 ,如果找不到就是null // 获取body : document.body // 获取html: document.documentElement // // 事件: 点击事件 click // 事件源 : 给谁注册事件,谁就是事件源 // 事件名 : 注册的是什么事件 // 事件处理函数 : 触发事件时,调用的函数 // 事件源.on + 事件名 = 事件处理函数 // // 操作元素的属性: // innerText // innerHTML // 相同点: 都会覆盖原来的内容 // 不同点: innerText 只识别文本 // innerHTML 可以识别标签 // 注意: 一般用于双标签 </script> </body> </html>10、课堂测试题目
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--如果a的href属性里面写了javascript: .这个javascript代表协议. 作用: 改变了a的默认行为, 会执行javascript后面的代码--> <!--void是js中的一个关键字 作用: 什么都不做--> <!--<a href="javascript:void(0) ;">点击</a>--> <!--<a href="javascript:void 0;">点击</a>--> <!--<a href="javascript:;">点击</a>--> </body> </html>11、扩展内容
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #wrap div{ } </style> </head> <body> <div id="wrap"> <div class="one">1</div> <div class="one">2</div> <div class="one">3</div> </div> <div class="one">4</div> <div class="one">5</div> <input type="text" name="one"> <script> // var box = document.getElementById('box'); // console.log(box); //不是标准的方式 不建议使用 // 获取元素的其他方式: //console.log(document.getElementsByName('one')); //通过name属性找元素, 返回的是伪数组,找不到是空的伪数组 console.log(document.getElementsByClassName('one')); //通过类型获取元素.返回伪数组,找不到返回空的伪数组 // var wrap = document.getElementById('wrap'); //console.log(wrap.getElementsByClassName('one')); //也可以使用element调用 //console.log(document.querySelector('.one')); //通过选择器查找元素 ,返回所有符合条件里面的第一个 //console.log(document.querySelectorAll('#wrap div')); //通过选择器查找元素 ,返回一个伪数组 </script> </body> </html>12、切换多张图片
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <button id="btn">点击切换</button> <br> <img src="images/0.jpg" alt="" id="img"> <script> //需求: 点击按钮,修改img的src路径 //1. 获取元素 var btn = document.getElementById('btn'); var img = document.getElementById('img'); var index = 0; //标记当前展示的是第几张 // 2. 给按钮注册点击事件 btn.onclick = function(){ // 3. 在事件处理函数中,判断当前是哪一张,修改展示下一张 index++; img.src = 'images/'+index+'.jpg'; //判断是否是第9张,如果是第几张,就把index变成-1. // 因为下一次在点击进来的时候,会先index++, -1就变成了0 if(index==9){ index = -1; } } </script> </body> </html>