webAPI
0-操作标签属性
-
系统属性
-
作用:
1. 可以操作标签身上的任何一个系统中的自带属性 (id, class, name ....) 2. 还可以操作用户自定义的属性
-
dom.getAttribute(属性名);
作用: getAttribute(属性名) 方法 就是用来获取标签身上属性的备注: 1. getAttribute() 方法中放的是一个属性的名字 2. getAttribute() 方法中只能获取对应的一个属性 3. getAttribute() 方法如果没有获取到对应的属性值,那么就返回 null ,代表没有
-
dom.setAttribute(属性名,值);
作用: 给标签设置属性(系统属性 + 自定义属性)例如: div.setAttribute('id', 'one'); div.setAttribute('myage', '18');
-
dom.removeAttribute(属性名);
作用: 将标签身上的属性移除(系统属性 + 自定义属性)例如: div.removeAttribute('myname'); div.removeAttribute('id');
-
-
自定义属性
-
标签属性(自定义属性)的作用是什么?
属性就是用来保存数据的.
-
什么是自定义属性?
-
自定义属性: 程序员自己定义的一个属性
-
为什么会有自定义属性?
自定义属性: 为了保存程序自己的一些数据.
-
-
最新的最标准的自定义属性的写法
所有的自定义的属性, 以 'data-'开始<div myname='dhl' data-myname='zs'></div>
-
设置自定义属性
dom.dataset.自定义属性名称 = 值;
-
获取自定义属性
dom.dataset备注: 1. 只能获取自定义属性, 不能获取系统属性 2. dataset 存放的结果是一个对象 3. 访问dataset对象中的值,不能 带有 'data-';
-
-
总结
-
课堂练习-自定义属性tab栏切换案例
1-文本框事件
-
onfocus事件
当输入框获取鼠标焦点的时候,就会触发该事件
-
onblur事件
当输入框失去焦点的时候,就会触发onblur事件
-
课堂案例-搜索框案例
2-鼠标事件
-
onmouseenter 事件
当鼠标进入时候触发的一个事件
-
onmouseleave 事件
当鼠标离开时候触发的一个事件
-
onmouseover 事件
当鼠标悬停到标签之上触发的一个事件
-
onmouseout 事件
当鼠标离开时候触发的一个事件
-
课堂案例-鼠标进入隔行变色案例
-
课堂案例-ta栏切换
3-回顾获取页面元素
- 通过标签ID
- 通过标签名称
- 通过选择器
4-通过DOM节点方式获取元素
4-0注意事项
下面的内容都在在文档树上直接操作的 (节点 + 元素)重点是: 与元素相关的内容
4-1与父节点相关的操作方式
4-1-1.知识点-判断父元素中是否有子节点
语法:
DOM.hasChildNodes();
- 总结:
- 该方法返回的是一个布尔类型的结果
- 该方法会将元素中所有的节点都获取(包括空格,回车符,文字,标签等)
4-1-2.知识点-获取父元素中所有子元素
语法:
DOM.children
- 总结:
- chiledren是一个属性,不是一个方法
- 该属性返回父元素中所有子元素(只包含标签),不包括空格,回车符,纯文本等
- 返回一个伪数组
- 通过dom.children.length来判断是否存在子元素(长度是为0)
4-1-3.知识点-获取父元素中第一个子元素
语法:
DOM.firstElementChild
- 总结:
- 通过该属性可以将父元素中的第一个子元素获取到【标签】
- 该属性只能获取标签,无法获取文字,空格,回车符等节点
4-1-4.知识点-获取父元素中最后一个子元素
语法:
DOM.lastElementChild
- 总结
- 通过该属性可以将父元素中最后一个子元素获取到【标签】
- 该属性只能获取标签,无法获取文字,空格,回车符等节点
4-1-5.知识点-获取父元素中所有子节点(了解)
语法:
DOM.childNodes
- 总结
- childNodes是一个属性,不是一个方法
- 该属性将父元素中所有节点返回(包括回车,空格等特殊符号)
- 该属性将回车符看做是一个空的文本
4-1-6.知识点-获取父元素中第一个子节点(了解)
语法:
DOM.firstChild
- 总结
- 通过该属性可以将父元素中第一个节点得到
- 节点中包括文字,回车符,换行符等
4-1-7.知识点-获取父元素中最后一个子节点(了解)
语法:
DOM.lastChild
- 总结
- 通过该属性将父元素中最后一个节点得到
- 节点中包括文字,回车符,换行符等
4-2与子节点相关的操作方式
4-2-1.知识点-获取上一个兄弟元素
语法:
DOM.previousElementSibling
4-2-2.知识点-获取下一个兄弟元素
语法:
DOM.nextElementSibling
4-2-3.知识点-获取下一个兄弟节点
语法:
DOM.nextSibling
4-2-4.知识点-获取上一个兄弟节点
语法:
DOM.previousSibling
4-2-5.知识点-根据子节点获取父元素
语法:
DOM.parentNode
4-3节点属性
4-3-1.知识点-获取节点类型
语法:
DOM.nodeType总结:
1. 如果nodeType返回值是1,那么代表当前节点是一个标签
2. 如果nodeType返回值是3,那么代表当前节点是一个文本
3. 如果nodeType返回值是2,代表标签中的一个属性
4-3-2.知识点-获取节点名称
语法:
DOM.nodeName总结:
1. 如果当前节点是一个标签,那么通过该属性返回该标签的名称
2. 如果当前节点是一个文本,那么通过该属性返回 #text
5-动态创建元素
-
知识点-通过document.write动态创建元素
-
知识点-通过innerHTMl动态创建元素
-
知识点-通过document.createElement()方式创建元素
- 步骤:
- document.createElement(‘标签名’)
- 通过appendChild(‘子元素’)添加到父元素中
- 步骤:
-
课堂练习-根据数组动态创建列表
var ary = ['张三', '李四', '王五', '赵六'];
-
课堂案例-根据数组动态创建英雄列表
var heads = ['姓名', '年龄', '性别', '学号', '薪资', '城市', '操作']; var datas = [ {name:'欧阳霸天',age:19,gender:'男',stuId:'1001',salary:'20000',city:'上海'}, {name:'令狐霸天',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'诸葛霸天',age:19,gender:'男',stuId:'1001',salary:'20000',city:'南京'}, {name:'西门霸天',age:19,gender:'男',stuId:'1001',salary:'20000',city:'深圳'}, {name:'鸠摩智',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'段延庆',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'段正淳',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'容子矩',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'崔绿华',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'梅超风',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'鲁有脚',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'焦木和尚',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'韩小莹',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'侯通海',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'欧阳克',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'欧阳峰',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'玄真道人',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'司徒伯雷',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'陈近南',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'张康年',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'吴大鹏',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'西奥图三世',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'任盈盈',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'林远图',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'郑镖头',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'张金鏊',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'陈歪嘴',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'洪人雄',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'余人彦',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'劳德诺',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'玉钟子',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'史镖头',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}, {name:'东方不败',age:19,gender:'男',stuId:'1001',salary:'20000',city:'北京'}];
-
移除子元素
父元素.removeChild(子元素);
-
-
课堂案例-动态创建英雄图片
6-其他方式创建元素
-
父节点.insertBefore(“新的节点”,“旧的子节点”)
通过insertBefore可以在父元素中某一个子元素的前面添加一个新元素
-
父节点.replaceChild(“新节点”,“旧节点”)
通过新节点将原来的节点替换掉
-
元素.cloneNode(true| false)
true: 代表克隆元素内部的所有信息 false: 默认。只克隆外边的标签
-
课堂案例-微博案例
-
oninput事件
DOM.oninput = function() {}
7-注册事件
-
知识点-通过 on 方式给元素注册事件
-
知识点-通过addEventListener方式注册事件
-
语法
DOM.addEventListener('事件类型',function(){});例如: div.addEventListener('click', function(){});注意: 通过addEventListener元素注册事件的时候,事件类型前不需要加 'on'
-
特点
-
-
知识点-移除事件
-
移除
on
方式注册的事件DOM.事件类型 = null;
-
移除
addEventListener
注册的事件DOM.removeEventListener('事件类型', 函数名)注意: 如果要通过removeEventListener移除事件的时候,那么addEventListener注册事件的时候需要是命名函数
-
8-事件流
- 知识点-事件冒泡
- 知识点-事件捕获
- 知识点-事件执行
- 知识点-事件委托
- 知识点-事件对象参数
- e.target : 获取真正触发事件的对象
- e.type: 事件类型
- e.clientX
- 特点: 相对body
- e.clientY
- e.offsetX
- 特点:相对父元素左上角
- e.offsetY
- e.pageX
- 特点:相对整个页面包括滚动出去的位置
- e.pageY
- e.screenX
- 特点:相对整个电脑屏幕
- e.screenY
- e.stopPropagation() 阻止事件冒泡
- 课堂案例-鼠标移动案例
9.键盘事件
-
知识点-onkeydown事件
-
知识点-onkeyup事件
-
知识点-onkeypress事件
-
键盘事件对象参数
-
e.key
-
e.keyCode
-
-
课堂案例-键盘移动案例