Web APIs

Web API是浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM)

一、获取元素

1.ID获取

var element=document.getElementById();

返回的是一个元素对象;console.dir(element) 打印返回的元素对象,可查看里面的细节

2.标签名获取

document.getElementByTagName('标签');

3.类名获取

document.getElementsByClassName('类名');

4.选择器获取

document.querySelector('选择器');(当有多个相同选择器,会选中选择器的第一个元素对象;选择器如是类或id,选择器前应加上对应的符号,标签则不用)

document.querySelectorAll('选择器');(选择器的所有对象)

5.特殊元素获取

获取body元素

document.body

获取html元素

document. documentElement

二、操作元素

1.改变元素内容

element.innerText

不识别html标签;去除空格和换行

element.innerHTML(常用)

识别html标签;保留空格和换行

2.修改表单元素

this.disabled=true;(让某个表单被禁用)

this指向事件函数的调用者

3.修改样式属性

element.style

通过此方法修改style样式,产生的是行内样式,CSS权重较高

element.className

通过修改元素的类名来更改样式,使用于样式较多或功能较复杂的情况

4.排他思想

先排除其他,再设置自己的样式

5.自定义属性的操作

1.获取属性值

Element.属性

获取元素本身自带的属性,如id

element.getAttribute('属性');

获取自定义属性,自己定义的属性,如index

2.设置属性值

element.属性='值'

设置内置属性值

element.setAttribute('属性', '值');

主要设置自定义属性

3.移除属性

element.removeAttribute('属性');

4.H5自定义属性

为了判断元素是内置属性还是自定义属性,H5规定自定义属性data-开头作为属性名并且赋值

三、节点操作

1.父节点

Node.parentNode(返回的是最近的一个节点,没有父节点返回null)

2.子节点

①parentNode.childNodes(返回值包括所有子节点,元素与文本节点,获取元素节点需再次处理,不提倡)

②parentNode.children(非标准,但实际开发常用)

③parentNode.firstChild(第一个子元素,返回值包括所有子节点,元素与文本节点,获取元素节点需再次处理,不提倡)

④parentNode.lastChild(最后一个元素,返回值包括所有子节点,元素与文本节点,获取元素节点需再次处理,不提倡)

⑤parentNode.firstElementChild(IE9以上支持)

⑥parentNode.lastElementChild(IE9以上支持)

⑦parentNode.children[0](返回第一个子元素,开发常用)

⑧parentNode.children[parentNode.children.length-1] (返回最后一个子元素,开发常用)

3.兄弟节点

①node.nextSibling(返回当前元素下一个兄弟节点,返回包含所有节点)

②node.previousSibling(返回当前元素下一个兄弟节点,返回包含所有节点)

③node.nextElementSibling(返回当前元素下一个兄弟节点,IE9以上支持)

④node. previousElementSibling(返回当前元素下一个兄弟节点,IE9以上支持)

4.创建和添加节点

动态创建节点

document.createElement()

添加节点

  • node.appendChild(child)   (node父级 child子级,添加到父节点的子节点末尾)
  • node.insertBefore(child,指定元素)   (添加到父节点的子节点前面)

5.删除节点

   node.removeChild(child)

 6.复制节点

   node.cloneNode()  (括号里为空或false时,只复制标签,不复制内容,是浅拷贝;括号里填true,会复制标签与内容,是深拷贝)

拓展:

三种动态创建元素比较

Document.write()      (写入页面内容流,会导致页面全部重绘)

Element.innerHTML   (将内容写入某DOM节点,不会导致页面全部重绘,创建多个元素效率更高(不要采取拼接字符串,采取数组形式拼接,虽然结构复杂一点))

Document.createElement()   (结构清晰,创建多个元素效率低)         

四、事件

1.注册事件

传统方式

btn.onclick

方法监听注册方式

(同个元素和事件可以添加多个侦听器)

addEventListener(type,listener[,useCapture])(IE9以上支持,可用attachEvent()代替(非标准))

 2.删除事件

传统方式

eventTarget.οnclick=null

方法监听注册方式

eventTarget.removeEventListener(type,listener[])

五、DOM事件流

(事件传播过程)

  1. 捕获阶段(addEventListener的第三个参数为true,处于捕获阶段)
  2. 当前目标阶段
  3. 冒泡阶段(addEventListener的第三个参数为false或空,处于冒泡阶段)

注:实际开发常用事件冒泡,但onblur  onfocus  onmouseenter  onmouseleave这些事件没有冒泡

六、事件对象

(无兼容问题时:event

考虑兼容问题时: window.event(ie678)

 解决无论是否兼容:e=e||window.event)

1.常见事件对象的属性和方法

 e.target和this区别

e.target返回的是触发事件对象(元素)

this返回的是绑定事件的对象(元素)

2.阻止默认行为

    • e.preventDefault()普通浏览器
    • e.returnValue低版本浏览器
    • return false;无兼容问题,只限传统注册方式
  1.      阻止事件冒泡
    • e.stopPropagation();
    • window.event.cancelBubble=true;

3.事件委托

原理:事件监听器设置在父节点上,利用冒泡原理影响每个子节点(只操作一次DOM,提高程序性能)

七、BOM

1.定时器

setTimeout(调用函数,延迟时间);这个函数也称为回调函数callback,只调用一次

setInterval(调用函数,间隔毫秒数);每隔间隔的毫秒数就去调用一次回调函数

2.停止定时器

clearTimeout(定时器标识符);

clearInterval(定时器标识符);

  • 3.this指向问题

    • 全局作用域和普通函数的this指向全局对象window
    • 方法调用中谁调用thhis指向谁
    • 构造函数中this指向构造函数的实例

4.JS执行机制

同步任务(console.log()):轮流进行

异步任务(回调函数):同时进行

  • 普通事件,如click,resize
  • 资源加载,如load,error
  • 定时器,如setInterval,setTimeout

先等待执行栈中的同步任务执行完毕,

任务队列中的异步任务再进入执行栈中执行

事件循环:主线程不断重复获得、执行任务的机制

5.location对象

(location属性用于获取、解析或设置URL)

location对象的属性

location.href       获取或者设置整个URL

location.search     返回参数

ocation对象的方法

location.assign()     跳转页面,能后退

location.replace()    替换当前页面,不能后退

location.reload()     重新加载页面 

6.navigator对象

可以判断用户用手机还是电脑打开页面

7.history对象

back()  后退

forward  前进

go(参数)参数1,则前进一页,参数为-1,则后退一页

八、PC端网页特效

1.offset

(动态获得元素的位置信息)

//offset与style区别

offset更适合获取元素位置

style更适合更改元素值

2.client

(用来获取该元素的元素、边框大小)

3.scroll

返回自身实际的宽度,常用于滚动

4.立即执行函数

(作用是独立创建了一个作用域,变量为局部变量,不会有命名冲突)

( Function() {} )  ()   或  (  Function() {} ()  );

5.mouseenter和mouseover的区别

mouseover经过自身和子盒子都会触发,会冒泡;mouseenter只会经过自身盒子会触发事件

6.动画原理

获得盒子当前位置;

在当前位置加1个移动距离

利用定时器不断重复操作

设置结束定时器条件

7.节流阀

当上一个函数执行完毕,再执行下一个函数动画,防止时间的连续触发

先设置var flag=true;

执行时关闭flag=false;

利用回调函数动画执行完毕再打开flag=true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值