WebAPI学习

MDN详细API: https://developer.mozilla.org/zh-CN/docs/Web/API

1.什么是DOM

DOM是用来处理可扩展标记语言的标准编程接口

2.获取元素

(1)通过ID获取

var element = document.getElementById(id);

1.element是一个 Element 对象。如果当前文档中拥有特定ID的元素不存在则返回null.
2.id是大小写敏感的字符串,代表了所要查找的元素的唯一ID.
3.返回一个匹配到 ID 的 DOM Element 对象。若在当前 Document 下没有找到,则返回 null。

(2)根据标签名获取

var elements = document.getElementsByTagName(name);

1.返回获取过来对象的集合,以伪数组的形式存储,可遍历输出
2.获取的内容是动态的

(3)通过HTML5新增的方法获取

class

var elements = document.getElementsByClassName(names); // or:
var elements = rootElement.getElementsByClassName(names);

选择器

element = document.querySelector(selectors);

1.表示文档中与指定的一组CSS选择器匹配的第一个元素,一个 HTMLElement对象。如果没有匹配到,则返回null。
2.如果您需要与指定选择器匹配的所有元素的列表,则应该使用querySelectorAll()

(4)获取body

var objRef = document.body;
document.body = objRef;

(5)获取html

var element = document.documentElement;

3.事件基础(触发——响应机制)

组成:事件源(获取元素) 事件类型(onclick…) 事件处理程序
常见鼠标事件
在这里插入图片描述

4.操作元素

(1)修改元素内容

var renderedText = HTMLElement.innerText;
HTMLElement.innerText = string;
const content = element.innerHTML;
element.innerHTML = htmlString;

1.设置元素的 innerHTML 将会删除所有该元素的后代并以上面给出的 htmlString 替代。
2.如果要向一个元素中插入一段 HTML,而不是替换它的内容,那么请使用 insertAdjacentHTML() 方法。

innerText与innerHtml区别:
1.innerText不识别html标签且去除空格和换行
2.innerHtml识别html标签W3C标准
3.均可读写

(2)改变元素属性

var img=document.querySelector('img')
img.src='路径'

(3)表单操作
输入框内容 input.value='内容'
按钮禁用 btn.disabled=true or this.disabled=true

(4)行内样式改变

//element.style
this.style.fontSize='200px'

(5)类名改变(覆盖原来的类名)

element.className='change'
element.className='change first'//多类名,可用来在原有的基础上添加

(6)获取属性值

element.属性  //获取内置属性值
element.getAttribute('属性')   //获取自定义属性
element.dataset.属性   //h5新增的获取自定义属性的方法(必须gata-开头的)

(7)设置属性值

element.属性='值'
element.setAttribute('属性',)   //主要设置自定义属性

(8)移除属性

element.removeAttribute('属性')

5.节点操作

元素节点 nodeType 1
属性节点 nodeType 2
文本节点(文字、空格、换行等) nodeType 3

1.获取父节点parentNode

element.parentNode  //得到的是距离元素最近的父节点

1.获取子节点

element.childNodes   //得到所有子节点,包括元素节点文本节点(标准)
element.children   //得到所有元素子节点(非标准)
element.firstChild   //第一个子节点,不管文本节点还是元素节点
element.lastChild   //最后一个子节点,不管文本节点还是元素节点
element.firstElementChild   //第一个子元素节点,IE9以上才支持
element.lastElementChild   //最后一个子元素节点,IE9以上才支持
//实际开发中的用法
element.children[0]
element.children[element.children.length-1]

2.获取兄弟节点

element.nextSibling   //下一个兄弟节点,,不管文本节点还是元素节点
element.previousSibling   //上一个兄弟节点,,不管文本节点还是元素节点
element.nextElementSibling   //下一个兄弟元素节点  IE9以上才支持
element.previousElementSibling   //上一个兄弟元素节点  IE9以上才支持

3.创建节点

var li = document.createElement('li')

4.添加节点

//node(父节点).appendChild(孩子)   后面追加
ul.appendChild('li')
//node.inserBefore(child,指定元素)  指定元素前面插入
ul.inserBefore(li,ul.children[0])

5.删除节点

node.removeChild(child)  //删除父元素中的第一个子节点

6.复制节点(克隆节点)

node.cloneNode();  //括号为空或者里面是false浅拷贝只复制标签不复制里面的内容
node.cloneNode(true);  //括号为true深拷贝复制标签复制里面的内容

7.三种创建元素方式的区别

document.write()  //直接将内容写入内容流,但是文档流执行完毕,这会将导致页面全部重绘
innerHtml  //多个拼接字符串时间较慢(若改用数组的方式时间比document.createElement('li')快,结构复杂)
document.createElement('li')  //appendChild时间较快,结构清晰

6.事件高级

1.注册事件(绑定事件)

target.addEventListener(type, listener, options);

type表示监听事件类型的字符串click。
listener当所监听的事件类型触发时,会接收到一个事件通知
options 可选 一个指定有关 listener 属性的可选参数对象

eventTarget.attachEvent(eventNameWithOn,callback)  //eventNameWithOn  事件类型     callback处理函数  IE9以前的版本支持

2.删除事件(解绑事件)

element.onclick=null   //传统方式
//element.removeEventListener(type, listener, options);
element.removeEventListener('click',fn);
element.detachEvent('onclick',fn);

3.DOM事件流
事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。
注意

  1. Js 代码中只能执行捕获或者冒泡其中的一个阶段。2. onclick和attachEvent只能得到冒泡阶段。
  2. addEventListener(type,listener[,useCapture])第三个参数如果是true,表示在事件捕
    获阶段调用事件处理程序;如果是 false(不写默认就是false ),表示在事件冒泡阶段调用事件处理程序。
    4实际开发中我们很少使用事件捕获,我们更关注事件冒泡
    5.有些事件是没有冒泡的,比如onblur、onfocus、onmouseenter、onmouseleave
    6.事件冒泡有时候会带来麻烦,有时候又会帮助很巧妙的做某些事件。

4.事件对象

e.target  返回触发事件的对象  标准
e.srcElement  返回触发事件的对象  非标准ie6-8使用
e.type返回事件的类型比如click mouseover 不带on
e.cancelBubble该属性阻止冒泡非标准ie6-8使用
e.returnValue该属性阻止默认事件(默认行为)非标准ie6-8使用 比如不让链接跳转
e.preventDefault()该方法阻止默认事件(默认行为)标准比如不让链接跳转
e.stopPropagation()阻止冒泡标准

5.事件委托

定义:不是每个子节点单独设置事件监听器,而是事件监听器设]在其父节点上,然后利用冒泡原理影响设置每个子节点。

6.鼠标事件

1.禁止鼠标右键菜单
contextmenu主要控制应该何时显示上下文菜单.主要用于程序员取消默认的上下文菜单

document . addEventListener( ' contextmenu', function(e) {
	e.preventDefault();
})

2.禁止鼠标选中( selectstart开始选中)

document. addEventLi stener ( selectstart' , function(e) {
	e. preventDefault() ;
}
e.clientX返回鼠标相对于浏览器窗口可视区的X坐标
e.clientY返回鼠标相对于浏览器窗口可视区的Y坐标
e.pageX返回鼠标相对于文档页面的X坐标IE9+ 支持
e.pageY返回鼠标相对于文档页面的Y坐标1E9+ 支持
e.screenX返回鼠标相对于电脑屏幕的X坐标
e.screenY返回鼠标相对于电脑屏幕的Y坐标

6.键盘事件

onkeyup某个键盘按键被松开时触发
onkeydown某个键盘按键被按下时触发
onkeypress某个键盘按键被按下时触发但是它不识别功能键 比如ctrl shift箭头等

7.BOM概述

BOM ( Browser Object Model )即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window.

8.window对象的常见事件

1.窗口加载事件

window.onload = function() {}
window.addEventListener ("load",function(){});
document . addEventListener ( ' DOMContentLoaded' , function() { }

window.onload是窗口页面)加载事件当文档内容完全加载完成会触发该事件(包括图像脚本文件、CSS文件等),就调用的处理函数。

2.调整窗口大小事件

window.onresize = function(){ } 
window.addEventLi stener ("resize",function() {});

3.定时器

//setTimeout()定时器
window.setTimeout (调用函数,[延迟的亳秒数]);
setTimeout0方法用于设置-个定时器,该定时器在定时器到期后执行调用函数。

//setInterval()定时器
window.setInterval (回调函数,[间隔的亳秒数]);
setInterval()方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。
//停止setTimeout()定时器
window.clearTimeout (timeoutID)

//停止setInterval()定时器
window. clearInterval (intexvalID) ;

4.Location对象

//Location对象的属性
location.href  //获取或者设置整个URL
location. host  //返回主机(域名) www.itheima.com
location.port  //返回端口号如果末写返回空字符串
location.pathname  //返回路径
location. search  //返回参数
location. hash  //返回片段#后面内容常见于链接锚点

//Location对象的方法
location.assign()  //跟href -样,可以跳转页面(也称为重定向页面)
location.replace()  //替换当前页面,因为不记录历史,所以不能后退页面
location.reload()  //重新加载页面,相当于刷新按钮或者f5如果参数为true强制刷新ctrl+f5

5.history对象
window对象给我们提供了-个history对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的URL.

back()  //可以后退功能
forward()  //前进功能
go(参数)  //前进后退功能参数如果是1前进1个页面如果是-1后退1个页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值