获取事件源

  • document.getElementById()
  • document.getElementsByClass()
  • document.getElementsByTagName()
  • document.getElementsByName()
  • document.querySelector()
  • document.querySelectorAll()

获取兄弟节点

//1.获取下一个兄弟节点
var span = document.getElementById('span');
var nextNode = span.nextElementSibling || span.nextSibling;//兼容IE678
//2.获取上一个兄弟节点
var previous = span.previousElementSibiling || span.previousSibling;
//3.获取第一个子节点
var firstChild = box.firstElementChild || box.firstChild;
//4.获取最后一个子节点
var lastChild = box.lastElementChild || box.lastChild;
//5.获取多个子节点的方法
var child = box.childNodes;//注意此时拿到的还有别的节点,如文本节点,注释节点,标签节点,而我们最想要的就是标签节点
var newList = [];
for(var i = 0; i < child.length; i++){var node = child[i];if(node.nodeType === 1 ){//元素节点的类型为1,其余的查文档就可以了newList.push(node);}
}
//6.通过非w3c标准的方法获取
var child = box.children;//注意点在IE678中会拿到注释节点的,但是在高版本的浏览器中只会拿到标签节点
//7.获取任意的兄弟节点
var child1 = box.parentNode.children[0];
var child3 = box.parentNode.children[3];
复制代码

DOM节点的操作

var box = document.getElementById('box');
//1.创建DOM节点
var span = document.createElement('span');
//2.添加属性
span.class = 'span1'
span.setAttribute('class','span1');
span.getAttribute('class');//获取节点属性
//3.插入到指定的位置
box.appendChild(span);//默认是插入插入到指定元素的最后的
box.insetBefore(插入元素,指定元素)
//4.删除节点
box.parentNode.removeChild(span);
span.remove();
//5.节点属性的设置,获取,删除
//6.复制节点
var newTag = box.cloneNode(false);//设置为false的时候是浅拷贝,如果设置为true的时候是深拷贝
复制代码

获取标签的内容

var box = document.getElementById(box);
//获取标签内的所有内容包括文本和标签
box.innerHTML();
//获取标签内的文本内容
box.innerText();
//获取单闭合标签的值
box.value
复制代码
  • 输入框获得焦点和失去焦点的
var name = document.getElementbyId('box');
name.onfocus = function(){};//输入框或的焦点
name.onblur = function(){};//输入框失去焦点
name.onchange = function(){};//可以理解为输入框失去焦点而且value发生变化的时候触发该事件
复制代码
  • 排他思想的使用:最好的解决方式就是闭包
  • 判断字符串的真实长度
var str = 'hello,世界';
function strLen(str){var len = 0;var Str = str.length;var code = 0;for(var i = 0; i < Str; i++){code = str.charCodeAt(i);//表示放回字符串的i+1为字符的Unicode编码if(code > 0 && code <= 127){len += 1;}else{len += 2;}}return len;
}
console.log(strLen(str));
复制代码
  • URL编码
// 编码过程// encodeURI:用于转码整个URL,它会将元字符和语义字符之外的字符都进行转义encodeURI('http://www.example.com/q=春节')
// "http://www.example.com/q=%E6%98%A5%E8%8A%82"// encodeURIComponent:会转码除了语义字符之外的所有字符,包括元字符encodeURIComponent('http://www.example.com/q=春节')
// "http%3A%2F%2Fwww.example.com%2Fq%3D%E6%98%A5%E8%8A%82"
// 解码过程
// decodeURI()
// decodeURIComponent()
复制代码
  • 日期对象

    • getTime():返回实例距离1970年1月1日00:00:00的毫秒数
    • getDate():返回每个月的几号,从1开始
    • getDay(): 返回每周的星期几取值为:0-6
    • getFullYear(): 返回四位数的年份
    • getMonth(): 返回月份取值为0-11
    • getHours(): 返回小时,取值为0-23
    • getMinutes(): 返回分钟0-59
    • getSeconds(): 返回秒数 0-59
    • getMilliSeconds: 返回毫秒数,取值为:0-999
  • 获取屏幕可视区域的宽度和高度,会随着屏幕的宽度变化的
// IE6+支持的属性
var screenW = document.documentElement.clientWidth;
var screenH = document.documentElement.clientHeight;// IE9+支持的属性
var screenW = window.innerWidth;
var screenH = window.INnweHeight;// 低版本的Chrome支持的属性var screenW = document.body.clientWidth;var scrrenH = document.body.clientHeigt;
复制代码
  • offset家族
// offset获取元素的宽度和高度
// offset = 边框 + 内边距 + 内容;是不包括外边距的
// offsetWidth和style.width之间的区别:
// 1.style.width只能获取到写在行内的样式,如果是写在style中的是获取不到的,只包含内容的区域,不包含边框和内边距的距离
// 2.offsetWidth获取到的是number类型的,style.width获取到的是string类型的
// 3.offsetWidth是只读属性是不能改变盒子大小的,而style.width是可以改变盒子大小的
// 4.offsetWidth是可以获取到行内的样式也是可以获取到样式表中的样式// offsetLeft和offsetTop
offsetLeft: 获取距离定位父盒子左边的距离,如果没有定位属性获取到的是距离body的距离
offsetTop: 获取距离定位父盒子上边的距离
offsetParent: 返回盒子带有定位属性的父级标签,可能是父亲标签也可能是爷爷标签
复制代码
  • 事件对象
// 1. 兼容写法: var e = event || window.event;
// 2. e.screenX || e.screenY 获取光标距离电脑屏幕左边和上边的距离
// 3. e.pageX || e.pageY 获取光标点击位置距离浏览器页面左边和上边的距离包括被卷进去的页面尺寸
// 4. e.clientX || e.clientY 获取光标点击位置距离浏览器的宽度和高度
// 5. e.target: 该事件被传送到的位置,例如点击div拿到的值就是div标签
// 6. e.type: 获取到的是事件的类型
复制代码
  • 避免选中问题:window.getSelection ? window.getSelection().removeAllRanges : document.selection.empty;兼容IE的写法
  • window.getSelection()获取鼠标划去部分的起始位置到结束位置,返回一个selection对象
  • scroll家族
// 1.IE9+和最新的浏览器
window.pageXOffset;(scrollLeft)
window.pageYOffset;(scrollRight)
// 2.Firefox浏览器
document.documentElement.scrollTop;
document.documentElement.scrollLeft;
// 3.chrome浏览器
document.body.scrolltTop;
document.body.scrollLeft;
// 封装获取的头部滚动距离和左边滚动距离
function scroll(){if(window.pageXOffset !== null){//IE9+和最新的浏览器return {left: window.pageXOffset;top: window.pageYOffset;}}else if(document.compatMode === 'CSS1Compat'){//IE678return {left: document.documentElement.scrollLeft;top: document.documentElement.scrollTop;}}else{//未声明DTD模式的浏览器return {left: document.body.scrollLeft;top: document.body.scrollTop;}}
}
复制代码
  • 瀑布流布局

    • 每一个小盒子的宽度是固定的,高度是不固定的
    • 根据屏幕宽度和小盒子宽度计算出列数
    • 设置父盒子居中显示
    • 计算出高度数组,遍历所有子元素,更新高度数组
  • HTML的 Doctype 作用 ? 严格模式与混杂模式如何区分?它们有何意义 ?
    • 声明位于文档的最前面,处于html标签之前,用来告诉浏览器的解析器,用什么文档类型规范来解析这个文档
    • 严格模式的排版和js运作模式是以该浏览器支持的最高标准运行,在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
    • DOCTYPE不存在或者格式错误,会导致页面以混杂模式显示
  • border的基本使用注意事项:
// html
<div id="demo"></div>
// css
<style>#demo{width: 100px;height: 100px;background-color: #fff;border: 2px solid #000;position: relative;}#demo:after, #demo:before{border: solid transparent;content: '';height: 0;width: 0;position: absolute;left: 100%;}#demo:after {border-width: 10px;border-left-color: #fff;// 注意这地方只是给边框的左边设置了颜色top: 20px;}#demo:before {border-width: 12px;border-left-color: #000;top: 18px;}
</style>
复制代码
  • js异步编程的集中方式

    • 回调函数
    • 事件监听
    • 发布和订阅:事件完全可以理解为信号,如果存在一个信号中心,某个事件任务完成就向信号中心发送一个信号,其他事件任务可以向信号中心订阅者这个信号,从而知道什么时候自己可以开始执行,这种模式也叫作观察者模式,或者发布/订阅模式。
    • Promise对象

转载于:https://juejin.im/post/5c91dd415188252d5404ae08

前端笔记—第15篇js中的DOM操作相关推荐

  1. JS学习笔记六:js中的DOM操作

    1. JS学习笔记六:js中的DOM操作 文章目录 1. JS学习笔记六:js中的DOM操作 1.1. 获取Dom节点 1.2. 元素属性的操作方式 1.3. DOM节点的创建.插入和删除 1.4. ...

  2. json对象、字符串-数组和数学对象中的相关方法、BOM对象、JS中的DOM操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 json对象 字符串对象的相关方法 获取字符串长度 length 清除两侧的空白 trim [ python的strip ] ...

  3. JS中的DOM操作属性、DOM创建、DOM增加、DOM修改、DOM删除以及DOM获取非行间样式

    当网页被加载时,浏览器会创建页面的文档对象模型DOM(Document Object Model),在DOM中,每个东西都是节点. DOM四大操作:查找.更新.添加.删除 通过DOM,JavaScri ...

  4. js中的DOM操作汇总

    一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...

  5. 你可能没有听说过 js中的 DOM操作还有这个: HTMLCollection 和 NodeList

    一文了解DOM操作中的HTMLCollection和NodeList ⛱️序言

  6. 前端开发:JS中关于去重操作的使用

    前言 前端开发里面,在JS中关于数据去重操作的使用是非常常用,也是非常重要的点,一般情况下关于对数组去重点操作是最常用的,其次是具体的关于某一数据类型的去重操作,如字符串去重.数字去重等.那么本篇博文 ...

  7. 移动端前端笔记 — 遇到的常见JS与CSS问题及解决方法

    移动端前端笔记 - 遇到的常见JS与CSS问题及解决方法 参考文章: (1)移动端前端笔记 - 遇到的常见JS与CSS问题及解决方法 (2)https://www.cnblogs.com/zhaoda ...

  8. 【JS笔记】JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性、DOM增删改查

    这篇文章,主要介绍JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性.DOM增删改查​​​​​​​. 目录 一.JS中的DOM 1.1.什么是DOM 1.2.获取DOM结点 (1)获取htm ...

  9. Henry前端笔记之 UI组件库中table与slot相关理解

    Henry前端笔记之 UI组件库中table与slot相关理解 作用域插槽: 解构赋值基础:https://developer.mozilla.org/zh-CN/docs/Web/JavaScrip ...

最新文章

  1. tomcat基本使用和超图基本jsp例子
  2. 2020年下信息系统项目管理师合格分数线通知
  3. 河北省内计算机对口学校有哪些专业,河北省对口单招有哪些高校
  4. Python总结:保留小数点任意位round函数不够精确
  5. RTX5 | 时间延时
  6. 【转载】SQL Server 批量插入数据的两种方法
  7. it devops_DevOps是IT商店的战场
  8. 周鸿祎:数字孪生时代 网络攻击影响力更甚核弹
  9. linux虚拟机系统的复制或克隆后续问题解决!
  10. SAP License:SAP系统中的删除命令
  11. 我的世界命令计算机,我的世界电脑版指令大全,你想要的指令都在这里
  12. 菜鸟供应链实时数仓的架构演进及应用场景
  13. php时间戳转换为英文日期格式,PHP时间戳和日期格式相互转换
  14. @新手文案,学会“五感写作法”,就能描写好“细节”!
  15. [JZOJ5358]【NOIP2017提高A组模拟9.12】BBQ
  16. 【谷歌地图--DirectionsSDK集成】
  17. 嵌入式学习⑩——STM的PWM和DAC
  18. SNS:95 后社交方式新主张
  19. JAVA学习视频及资料地址-持续更新
  20. 浅谈PHP设计模式的门面模式

热门文章

  1. Spring整合定时任务组件Quartz的简单使用
  2. 21.Longest Palindromic Substring(最长回文子串)
  3. DHCP : 网络世界身份的获取
  4. 1001: [BeiJing2006]狼抓兔子
  5. POJ 3553 Light Switching Game 博弈论 nim积 sg函数
  6. 冒泡排序算法[C++]
  7. Spring依赖注入:注解注入总结
  8. Django内建模版标签和过滤器
  9. 关于调试过程中单片机复位的几点心得与体会
  10. Java并发——结合CountDownLatch源码、Semaphore源码及ReentrantLock源码来看AQS原理