前端学习记录之Javascript-DOM
简介
为了快捷方便,在工作和项目中,一直都是使用的框架,比如jqeruy,vuejs,react等。然后在长时间使用框架后,往往有一个后遗症,就是对于原生的Javascript基本上已经不知道怎么写了(这是我个人情况,大神们肯定不是的)。
因此,最近一段时间,本人都是在重新温习原生的Javascript,发现好多知识点都已经遗忘了;做为一个想往上进步的前端程序猿,这肯定是不行的。所以,在这里梳理一下,最近复习的一些知识点。
DOM 操作
DOM 是 Document Object Model (文档对象模型)的缩写;HTML DOM 定义了所有HTML元素的对象和属性,以及访问他们的方法。换言之,HTML DOM是关于如何获取、修改、添加、或者删HTML元素的标准。
HTML DOM 节点树
在HTML DOM中,所有事物都是节点,DOM是被视为节点树的HTML。
- 整个文档是一个文档节点
- 每个HTML元素是元素节点
- HTML元素内的文本是文本节点
- 每个HTML属性是属性节点
- 注释是注释节点

节点的关系构成
节点树中的节点彼此拥有层级关系。
父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。
通俗一点讲:父级关系,子级关系,兄弟关系。
- 在节点树中,顶端节点被称为根(root)
- 每个节点都有父节点、除了根(它没有父节点)
- 一个节点可拥有任意数量的子
- 同胞是拥有相同父节点的节点
节点操作
节点类型(nodeType)
节点类型 | nodeType
---- | ----
元素节点 |1
document | 9
文本节点 | 3
注释节点 | 8
属性节点 |2
节点的查找操作
| 节点操作 | 操作解释 |
|---|---|
| nodeNam | 查看节点的属性名 |
| nodeValue | 查看节点的属性值 |
| attributes | 查看节点的属性 |
| childNodes | 获取某个节点的所有子节点(包括文本节点和注释节点) |
| children | 获取某个元素下的所有的元素子节点(不包括文本节点和注释节点) |
| firstElementChild | 查找某个元素的第一个子节点 |
| lastElementChild | 查找某个元素的最后一个节点 |
| parentNode | 查找某个元素的父节点 |
| nextElementSibling | 查找某个元素的下一个兄弟节点 |
| prevElementSibling | 查找某个元素的上一个兄弟节点 |
| offsetParent | 最近的有定位的属性的祖先节点,如果所有的祖先都没定位,那么默认body |
节点的增删操作
| 节点操作 | 操作解释 | 注释 |
|---|---|---|
| document.createElement() | 创建元素节点 | document.createElement('li') |
| appendChild() | 向父级节点末尾插入元素节点 | oUl.appendChild(li) |
| insertBefore() | 在指定的子节点前面插入新的子节点。 | oUl.insertBefore(newLi,oldLi) |
| removeChild() | 删除父级中的某个元素 | oUl.removeChild(oldLi) |
| replaceChild() | 替换父级中的某个元素 | oUl.replaceChild(newLi,oldLi) |
节点的属性操作
| 节点操作 | 操作解释 | 注释 |
|---|---|---|
| getAttribute() | 获取元素属性的属性值 | oDiv.getAttribute('name') |
| setAttribute() | 设置元素属性的属性值 | oDiv.setAttribute('name','div') |
| removeAttribute() | 删除元素的某个属性 | oDiv.removeAttribute('name') |
| innerHTML | 读取修改元素内的所有代码 | 读:ODiv.innerHTML 、写:ODiv.innerHTML = '' |
| className | 动态添加class | oDiv.className = 'active' |
获取节点的距离与宽高
| 操作 | 操作解释 | 注释 |
|---|---|---|
| offsetWidth/offsetHeight | 获取元素的宽高 | 计算边框与padding,不计算margin |
| clientWidth/clientHeight | 获取元素的宽高 | 不计算边框与margin,计算padding |
| offsetLeft | 元素的左外边框到有定位父级的左内边框的距离 | 如果所有的祖先都没定位,那么默认body |
| offsetTop | 元素的上外边框到有定位父级的上内边框的距离 | 如果所有的祖先都没定位,那么默认body |
关于表格的操作
| 操作 | 解释 |
|---|---|
| table.tHead | 获取表格头部 |
| table.rows | 获取tr |
| table.tFoot | 获取表格底部 |
| table.tBodies | 获取表格主体 |
| rows[i].cells | 获取td |
事件
event(事件) 对象
event事件对象,当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细的信息都会被临时保存都一个指定的地方,供我们调用
兼容:
ie/chrom :event 是一个内置全局对象
火狐 :event是事件函数的第一个传入参数
function(ev){
var ev = ev || event
}
对象属性
clientX / clientY:鼠标相对于可视区的位置
事件冒泡
当一个元素接收到事件的时候,会吧它接受到的所有传播给它的父级,一直当顶层window
阻止冒泡:
event.cancelBubble = true;
给同一个对象绑定多个不同的函数
ie:obj.attachEvent('onclick',function);
1、没有捕获
2、this指向是window
3、标准是正序,其余是倒序
标准:obj.addEventListener('click',function,false);
1、有事件捕获
2、this指向当前对象
3、执行时正序
4、事件没有on
取消绑定事件:
标准:obj.removeEventListener(事件名,事件函数,是否捕获);
ie:obj.detachEvent('onclick',function);
call方法:函数下的一个方法
call方法第一个参数可以改变函数执行过程中的指向
键盘事件:
onkeydown:当键盘按下的时候触发,如果不抬起,那么会连续触发
onkeyup:当键盘抬起的时候触发
event.keyCode :数字型,键盘的键值
ctrlKey,shiftKey,altKey 布尔值
事件默认行为:
当一个事件发生的时候,浏览器自己会默认做的事件
阻止默认行为:
a、return false;
右键菜单:
oncontextmenu
焦点事件
onfocus :获取焦点
onblur : 失去焦点
obj.focus() :给指定的元素设置焦点
obj.blur():取消指定元素的焦点
obj.select()
原文 http://blog.hawkzz.com/2017/06/11/前端学习记录之Javascript-DOM/ 作者 hawk_zz
前端学习记录之Javascript-DOM的更多相关文章
- 前端学习记录 week 1
前端学习记录 week 1 基础知识 CSS盒模型 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用.CSS盒模型本质上是一个盒子,封 ...
- 前端学习 第二弹: JavaScript中的一些函数与对象(1)
前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...
- 前端学习笔记之JavaScript
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后将其改名ScriptEase(客 ...
- 前端学习实践笔记--JavaScript深入【3】
这章主要讨论闭包和原型,以及面向对象和继承. 闭包 闭包充分利用了JS里面作用域的概念,作用域的好处是内部函数可以访问定义它们的外部函数的参数和变量.使用闭包主要是为了读取函数内部的变量或者将函数内部 ...
- 前端学习实践笔记--JavaScript深入【2】
趁热继续再来学习一波,接下来主要介绍函数,object,数组,面向对象,new实例化. 在介绍“对象”之前,首先得梳妆打扮一番吧,那这梳妆打扮主要有两条路线,一条是淑女范(利用函数对象化),一条是邻家 ...
- 前端学习实践笔记--JavaScript深入【1】
这一年中零零散散看过几本javascript的书,回过头看之前写过的javascript学习笔记,未免有点汗颜,突出“肤浅”二字,然越深入越觉得javascript的博大精深,有种只缘身在此山中的感觉 ...
- 前端学习笔记之HTML DOM操作
HTML DOM 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). DOM节点类型 文档节点 (document,唯一) 元素节点 (那些个标签div ...
- Web前端学习笔记之JavaScript、jQuery、AJAX、JSON的区别
官网的英文解释: javascript和jQuery有点关系,js是一种脚本语言,主要用于客户端,现在主要用于实现一些网页效果. jquery是js的一个库,你可以认为是对js的补充,提供了很多方便易 ...
- 前端学习记录(HTML篇)
HTML Hyper Text Markup Language,超文本标记语言,不是一种编程语言,而是一种标记语言 思想:网页中有很多数据,不同的数据可能需要不同的显示效果,一个标签相当于一个容器,想 ...
随机推荐
- JQuery自定义插件详解之Banner图滚动插件
前 言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...
- socket__服务端于客户端
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/8/23 15:33 # @Author : Mr_zhang # @Site ...
- 什么是GUID?
定义及格式 1.全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系 ...
- 使用EF操作Mysql数据库中文变问号的解决方案
问题场景:使用Entity Framework 6.0 操作Mysql数据库,中文保存至数据库后全部变成问号.但是使用Mysql API却不会. 原因排查:首先想到的肯定是数据库编码问题,一次查询了表 ...
- nginx + tomcat + redis 部署项目,解决session共享问题。
最近自己搭了一套nginx的环境,集群部署了公司的一个项目,中间解决了session共享的问题.记录如下,以备日后查看. 1.环境 windows10 家庭中文版,jdk 7, tomcat 7.0. ...
- MySQL(十六)之MySQL用户管理
一.MySQL用户管理概述 MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类: 超级管理员用户(root),拥有全部权限 普通用户,由root创建,普通用户只拥有root所分配的权限 二 ...
- Excel 查找某列中的数据在另一列是否存在及输出第三例的数据
最近在操作Excel文件数据导入数据库时,经常需要检查Excel中哪些数据数据库中已经存在,哪些不存在,然后再将不存在数据库中的Excel数据导入:在此过程中,经常需要操作Excel中的数据,所以.也 ...
- code force 424 A - Office Keys
There are n people and k keys on a straight line. Every person wants to get to the office which is l ...
- 2016 ACM/ICPC Asia Regional Dalian Online Football Games
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- mysql索引优化建议
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...