0.本周知识点预览
- DOM
- jQuery
1.DOM
1.查找元素
1.直接查找()
###根据ID获取一个标签
document.getElementById
###根据name属性获取标签集合
document.getElementsByName
###根据class属性获取标签集合
document.getElementsByClassName
###根据标签名获取标签集合
document.getElementsByTagName
2.间接查找
1.查找节点
###查找父节点
parentNode
###所有子节点
childNodes
###第一个子节点
firstChild
###最后一个子节点
lastChild
###下一个兄弟节点
nextSibling
###上一个兄弟节点
previousSibling
2.查找标签
###父节点标签元素
parentElement
###所有子标签
children
###第一个子标签元素
firstElementChild
###最后一个子标签元素
lastElementChild
###下一个兄弟标签元素
nextElementtSibling
###上一个兄弟标签元素
previousElementSibling
代码解析及展示:查找节点和查找标签都是查找标签并处理,但不同的是,查找节点会把标签中的内容一并打印出来,比如每个标签之间有空行也会打印
2.操作
1.内容
###文本
innerText
###HTML内容
innerHTML
###值
value
代码解析及展示:innerText是标签内的文本,innerHTML是标签内的HTML标签(包含文本),value是标签的value属性的值。
2.属性
###获取所有标签属性
attributes
###设置标签属性
setAttribute(key,value)
###获取指定标签属性
getAttribute(key)
代码解析及展示:以上是标签内常用的对属性的操作。
3.class操作
###获取所有类名
className
###删除指定类
classList.remove(cls)
###添加类
classList.add(cls)
代码解析及展示:首先先查找到指定的标签,操作标签,获取类名,className是字符串形式,classList是列表形式,可以添加,删除、
4.标签操作
1.创建标签
1.方式一
###创建标签
document.createElement
###定义文本
innerText
###添加类
tag.className
###添加各种属性...
...
代码展示:
2.方式二
简单直接:直接定义一个字符串类型的标签,内部属性、类等用单引号
var lk = "<p class='p1' style='color:red'>哈哈</p>"
2.操作标签
1.方式一
###创建一个标签 var obj = "<input type='text' />"; ###插入创建好的标签到html,xxx代表父标签,beforeEnd代表位置,这个参数只有4个,分别是beforeEnd,beforeBegin,afterEnd,afterBegin xxx.insertAdjacentHTML("beforeEnd",obj); ###插入即将要创建的标签到html,位置参数一样,也是4个 xxx.insertAdjacentElement('afterBegin',document.createElement('p'))
代码解析及展示:insertAdjacentHTML,代表插入的是标签变量;InsertAdjacentElement,代表插入的是DOM创建标签的语句。
位置参数讲解(死记硬背吧。。。):
1.beforeEnd:插入父标签内的最后一个标签的后边
2.beforeBegin:插入父标签外、父标签上边紧邻父标签的位置,且和父标签平级。
3.afterEnd:插入父标签外部、紧邻父标签的下方、且和父标签平级。和beforeBegin 正好相反。
4.afterBegin:插入父标签内,第一个标签的上边,和beforeEnd正好相反。
5.样式操作
###查找标签 var obj = document.getElementById('i1') ###定义字体样式 obj.style.fontSize = "32px"; ###定义背景色样式 obj.style.backgroundColor = "red"; ###定义其他样式... obj.style...
6.位置操作
###总文档高度 document.documentElement.offsetHeight ###当前文档占屏幕高度 document.documentElement.clientHeight ###自身高度 tag.offsetHeight ###距离上级定位高度 tag.offsetTop ###父定位标签 tag.offsetParent ###滚动高度 tag.scrollTop /* clientHeight -> 可见区域:height + padding clientTop -> border高度 offsetHeight -> 可见区域:height + padding + border offsetTop -> 上级定位标签的高度 scrollHeight -> 全文高:height + padding scrollTop -> 滚动高度 特别的: document.documentElement代指文档根节点 */
7.其他操作
console.log 输出框 alert 弹出框 confirm 确认框 // URL和刷新 location.href 获取URL location.href = "url" 重定向 location.reload() 重新加载 // 定时器 setInterval 多次定时器 clearInterval 清除多次定时器 setTimeout 单次定时器 clearTimeout 清除单次定时器
8.其他事件
9.DOM举例(重点来了...)
1.需求一
需求:写一个输入框,默认输入框内有默认文字,当鼠标点中输入框,默认文字消失,如若输入内容,鼠标移走,无变化,如若不输入内容,鼠标移走,输入框内继续出现默认文字。
源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--onfocus代表鼠标选中某个位置,onblur代表鼠标从某个位置移走--> <input id="i1" type="text" value="请输入关键字" onfocus="f1();" onblur="f2();"/> <input id="i2" type="text"/> <script type="text/javascript"> // 获取ID为i1的标签,重置value function f1() { var i1 = document.getElementById("i1"); if (i1.value == "请输入关键字"){ i1.value = "" } } // trim方法代表去掉空格\空行 function f2() { var i2 = document.getElementById("i1"); if (i2.value.trim().length == 0){ i2.value = "请输入关键字" } } </script> </body> </html>
2.需求二
需求:简易版模态对话框,点击按钮,弹出个框,在框内点击按钮,恢复初始
源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .hide{ display: none !important; } .shade{ position: fixed; top:0; bottom: 0; left: 0; right: 0; /*background-color: black;*/ /*opacity: 0.6;*/ background-color: rgba(0,0,0,.6); z-index: 1000; } .modal{ height: 200px; width: 400px; background-color: white; position: fixed; top: 50%; left: 50%; margin-left: -200px; margin-top: -100px; z-index: 1001; } </style> </head> <body> <div style="height: 2000px;background-color: #428bca"> <input type="button" value="点我" onclick="f1();"/> </div> <div id="i1" class="shade hide"></div> <div id="i2" class="modal hide"> <input type="button" value="取消" onclick="f2();"/> </div> <script> function f1(){ var i1 = document.getElementById("i1"); var i2 = document.getElementById("i2"); i1.classList.remove("hide"); i2.classList.remove("hide"); } function f2() { var i1 = document.getElementById("i1"); var i2 = document.getElementById("i2"); i1.classList.add("hide"); i2.classList.add("hide"); } </script> </body> </html>
3.需求三
需求:实现一键全选、反选、取消
源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="button" value="全选" onclick="click_all('all');"/> <input type="button" value="取消" onclick="click_all('none');"/> <input type="button" value="反选" onclick="click_all('reverse');"/> <table border="2"> <thead> <tr> <th>选择</th> <th>用户名</th> <th>密码</th> </tr> </thead> <tbody id="t1"> <tr> <td> <input type="checkbox"/> </td> <td>123</td> <td>456</td> </tr> <tr> <td> <input type="checkbox"/> </td> <td>aaa</td> <td>456</td> </tr> <tr> <td> <input type="checkbox"/> </td> <td>ddd</td> <td>456</td> </tr> </tbody> </table> <script> function click_all(type) { console.log(type); var tb = document.getElementById("t1"); var trs = tb.children; console.log(trs); for(var i=0;i<trs.length;i++) { var tr = trs[i]; var ip = tr.firstElementChild.firstElementChild; // var ip = trs[i].firstElementChild.firstElementChild; if (type == "all") { ip.checked = true; ip.setAttribute('checked', 'checked') }else if(type == "none") { ip.checked = false; ip.removeAttribute('checked'); }else if(type == "reverse") { if (ip.checked) { ip.checked = false; } else{ ip.checked = true; } } } } </script> </body> </html>
4.需求四
需求:全屏幕,滑动滑轮一部分高度会在右下角出现“返回顶部”,点击”返回顶部“,返回顶部
源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .back { position: fixed; color: red; right: 30px; bottom: 30px; } .screen { height: 2500px; background-color: #428bca; overflow: auto; } .hide { display: none; } </style> </head> <body onscroll="backscroll();"> <div class="screen"></div> <div> <!--<a id="i1" class="back hide" οnclick="backtop();">返回顶部</a>--> <input id="i1" class="back hide" onclick="backtop();" type="button" value="返回顶部"/> </div> <script> function backtop () { document.body.scrollTop = 0; } function backscroll() { var back_height = document.body.scrollTop; var s = document.getElementById("i1"); if (back_height > 300){ s.classList.remove("hide") }else{ s.classList.add("hide") } } </script> </body> </html>
5.需求五
需求:标签默认属性与DOM事件优先级,submit提交属性与onclick
源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="http://www.baidu.com/s"> <input id="s1" type="text" name="wd"/> <!--input标签的submit有提交功能,但是在onclick中,假如定义return func,如若返回true,可以跳转,返回false,不能跳转--> <input type="submit" value="提交" onclick="return Click();"/> </form> <script> function Click() { var c = document.getElementById("s1"); if (c.value.length > 0){ return true; }else{ alert("输入不能为空"); return false; } } </script> </body> </html>
6.需求六
需求:实现点赞,在要点赞的旁边出现+1,逐渐变大、虚化
源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .item { padding: 50px; position: relative; } .item a { color: red; } </style> </head> <body> <div class="item"> <a onclick="f1(this);">点赞1</a> </div> <div class="item"> <a onclick="f1(this);">点赞2</a> </div> <div class="item"> <a onclick="f1(this);">点赞3</a> </div> <script> function f1(ttt) { console.log(ttt); var top = 53; var left = 92; var op = 1; var fontSize = 20; var tag = document.createElement("span"); tag.innerText = "+1"; tag.style.position = "absolute"; tag.style.top = top + "px"; tag.style.left = left + "px"; tag.style.fontSize = fontSize + "px"; tag.style.opacity = op; ttt.parentElement.appendChild(tag); var ret = setInterval(function () { top -= 10; left += 10; op -= 0.15; fontSize += 10; tag.style.top = top + "px"; tag.style.left = left + "px"; tag.style.opacity = op; tag.style.fontSize = fontSize + "px"; if (op < 0) { clearInterval(ret); ttt.parentElement.removeChild(tag); } }, 100) } </script> </body> </html>
2.jQuery
jQuery教程链接:http://www.php100.com/manual/jquery/index.html
谢谢。