前端BOM,DOM基础知识汇总

Dom—> Document Object Model(文档对象模型) (tips: 下文元素对象简写为ele)
怎么用:

​ 增删改查

查: 5种:

​ 通过id document.getElementByID() =》返回的是 一个元素对象

​ 通过class document.getElementsByClassName() =>返回的是伪数组 可以用索引取

​ 通过 tag document.getElementsByTagName() =>返回的是伪数组

​ 通过 querySelector() =》返回的是查找到的第一个元素

​ 通过 querySelectorAll =》返回的是 伪数组

​ 延伸: 伪数组 有length属性 可以索引取元素 但是 不能直接用数组的方法

​ 用数组的forEach方法 Array.prototype.forEach.call(this,()=>{})

​ [].forEach.call(this, ()=>{]}) //开发可以这么写

​ 驱动函数this的指向问题: 谁触发就指向谁

操作元素的class:获取: ele.className

​ 设置: ele.className=’ ’ //参数可以写多个 会覆盖之前所有的class类!!!!!!!!

操作行内样式 ele.style.css属性名=‘属性值’ //注意权值 权值权值!!!!!!!

节点分类:
元素节点:
​ nodeType =》 1

​ nodeName =》标签名大写

​ nodeValue =》 null

属性节点:
​ nodeType =》 2

​ nodeName =》属性名

​ nodeValue =》 属性值

文本节点:
​ nodeType =》 3

​ nodeName =》#text

​ nodeValue =》回车换行

节点访问:
​ 获取父节点: ele.parentNode

​ 获取第一个子节点: 父节点.firstElementChild ie的写法:父节点.firstChild

​ 如果在老项目中遇到这种写法: 父节点.firstChild|| 父节点.firstElementChild (这种就是获取第一个子节点的 兼容写法)

​ 获取最后一个子节点: 父节点.lastElementChild

​ 获取上一个兄弟元素: ele.previousElementSibling

​ 获取下一个兄弟元素: ele.nextElementSibling

获取所有的子节点:父节点.childNodes w3c标准的 (不好用 返回所有节点 包括文本节点)

​ 父节点.children 非标准但是好用~ 返回的是元素节点的所有子节点

innerHTML 和innerText
​ 获取: innerHTML获取标签内所有的内容(包括标签)innerText 只能获取标签里的文本

​ 设置: innerHTML 会渲染标签 innerText 就算是有标签 也会以字符串的形式渲染

元素节点的属性操作:

​ 查: ele.getAttributeNode() //返回属性节点对象 ele.getAttribute() //只返回要查询的属性名的属性值

​ 增( 改): ele.setAttribute(‘属性名’,‘属性值’ ) //一次只能设置一个 如果有这个属性名 就是修改 没有就是设置

​ 删:ele.removeAttribute(‘属性名’)

class操作
​ 增: ele. t.add(‘类名1’…) *** 一次可以添加 多个!!!!!!!

​ 删; ele.classList.remove(‘类名1’…) *** 一次可以删除多个!!!!!!!

​ 切换:ele.classList.toggle(‘类名’) 切换类

​ 替换类 ele.classList.replace(“被替换的类名”, “新类”);

​ 查 ele.classList.contains(‘类名’)

获取元素的 内嵌和外链样式:

function getStyle(ele, attr) { //兼容写法
if (window.getComputedStyle) {
return window.getComputedStyle(ele, null)[attr];
}
return ele.currentStyle[attr];
}
增加节点:document.createElement(‘tag’) //只是创建!!!

拼接节点: 父节点.appendChild(ele) 拼接在父节点的最后

​ 父节点.insertBefore(‘newEle’,‘参照节点’) 拼接在参照节点的前边

​ 移除子节点: 父节点.removeChild(ele) 移除子节点

​ 替换; 父节点.replaceChild(newEle,参照节点) 新的替换老的

克隆 ele.cloneNode(boo) 默认是false 表示 只克隆标签 不克隆内容 true相反

事件绑定:
​ 简单事件:

​ 绑定:ele.on+‘事件名称’=function(){} ///层叠覆盖问题

​ 解绑:ele.on+‘事件名称’=null

​ 事件监听器:

​ 绑定: ele.addEventListener(‘不带on的事件名称’,事件驱动函数)

​ 解绑:ele.removeEventListener(‘不带on的事件名称’,绑定时的那个事件驱动函数) //第二个参数必须是 绑定时的那个事件驱动函数!!!!!否则解绑失败

BOM Browser Object Model 浏览器对象模型
​ window调用的发属性属性和方法 可以省略window (ps:alert() window.alert() )

定时器的使用 : 开启 setInterval() setTimeOut()

​ 关闭 clearInterval() clearTimeOut()

location对象:
地址栏全信息:,location.href
协议:location.protocol
“主机:”,location.hostname
主机+端口:“,location.host
地址路径部分:”,location.pathname
“地址的#号锚点部分:”,location.hash)
地址的参数部分:",location.search

location对象三个关于页面跳转的功能
location.href=“地址”
location.assign(“地址”)
location.replace(“地址”)

区别:
assign跳转 会把当前页面存为历史记录 跳转过去以后 可以回退回来
replace跳转 会把当前页面销毁 跳转的新页面 新页面点击回退只能往上一层回退 当前页面记录不存在
常用在 登录成功以后跳转下一个页面 使用replace 不把登录页存为历史记录
href和assign功能一模一样
navigator.userAgent //获取类别版本客户端操作系统等信息

navigator.appVerson //返回浏览器的平台和版本信息

js特效:
offset:

​ offsetWidth/Height =>获取的是盒子最终渲染的宽高 (盒子宽高+padding+border)

​ offsetLeft/Top =>返回的是距离最近的 有定位的 父系盒子的(左边上边)的距离,如果都没有定位,返回的是元素距离body的距离 (返回的是number)

​ offsetParent => 返回的是距离对劲的有定位的父系盒子 如果都没有定位 返回的是 body

​ scroll:

​ scrollWidth/Height 内容不超出盒子的时候 返回的是盒子宽高+padding 如果超出了 返回 内容的宽高

​ scrollLeft/Top 如果是HTML调用的话 返回的是页面被卷去的左侧 和头部的距离

​ 如果盒子调用(盒子必须有滚动条) //拓展 获取的是被卷曲的左侧和头部的距离

event

​ 拓展 (兼容写法) event = event || window.event

​ function demo(event){

​ event = event || window.event

​ }

event.pageX/Y 鼠标到body的距离

event.screenX/Y 鼠标到屏幕的距离

event.clientX/Y 鼠标到可视区域的距离

clientWidth/Height HTML 获取浏览器可视区域的宽高

​ 其他方式获取 window.innerWidth/Height

clientLeft/Top (获取的是盒子的左、上边框宽度) 最没用的

冒泡阻止: event.stopPropagation()

默认事件以及阻止 event.preventDefault()

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值