毕业生求职中,有坑联系~
引言
现在有很多 MVVM 框架,已经极大的改变了前端的开发模式,比如 React、Vue,我们只需要操作数据,视图就能自动随着数据的改变而改变,无需我们操作 DOM,虽然如此,但是作为一个前端开发工程师,我们还是有必要深刻掌握基本的 DOM 操作的,也许我们未来的某个时间,我们也能写一个类似框架也说不定呢?但是前提一定是我们必须掌握这种基本操作。
接下来,我带领大家重新温习一下基本 DOM 操作。
创建
常用的节点类型有如下几种:元素节点、属性节点、文本节点、注释节点。
话不多说,接下来带带大家温习一下基本操作方法。
- 元素节点
创建一个div。
var div = document.createElement('div');
cnosole.log(div);
- 属性节点
属性节点包含两类,一类是DOM元素的基本属性,还有一类是自定义属性。
基本属性既可以通过如下方式设置,也可以通过 createAttribute 方式设置。
document.body.id = 'container';
注意:自定义属性是一定要使用 createAttribute 方式来创建的。
比如创建一个自定义属性 custom 。
var dataAttribute = document.createAttribute('custom');
cnosole.log(dataAttribute);
- 文本节点
创建一个内容为“大家好”的文本节点
var textNode = document.createTextNode('大家好');
console.log(textNode);
- 注释节点
创建一个内容为“这一个标签”的注释节点
var comment = document.createComment('这是一个标签');
console.log(comment);
查找
- id 属性查找
查找拥有指定id的第一个元素节点。
例如我们查找一个id属性值为“id”的元素。
var id = documentElementById('id');
console.log(id);
- class属性查找
查找所有带有class指定属性值的元素。
例如我们查找class属性值为“class”的元素。
var className = document.getElementsByClassName('class');
console.log(className);
- 标签名查找
查找所有指定标签名的元素,例如我们查找标签名为div的元素。
var tag = document.getElementsByTagName('div');
console.log(tag);
- name属性查找
查找所有指定name属性值的元素,例如我们查找name属性值为name的元素。
var name = document.getElementsByName('name');
console.log(name);
-
css 选择器查找
-
查找第一个指定css选择器的元素。
例如我们查找css选择器为#id的元素。
var selector = document.querySelector('#id'); console.log( selector);
-
查找所有指定css选择器的元素。
例如我们查找css选择器为#id的元素。
var selectors = document.querySelectorAll('#id'); console.log(selectors);
-
替换
- 替换元素
创建一个新节点替换父元素已有的节点。
例如我们把id属性值span的span标签替换成p标签。
var newElement = document.createElement('p');
var span = document.getElementById('span');
//查找被替换元素的父元素。
var parent = span.parentNode;
//替换旧元素为新元素,返回值是被替换掉的旧元素。
var replace = parent.replaceChild(newElement, span);
删除
-
删除元素节点
删除父元素中的一个子节点。
例如我们删除 body 元素下 id 属性值为 id 的元素。
var div = document.getElementById('id'); document.body.removeChild(div);
也可以直接删除,谁调用删除谁。
var div = document.getElementById('id'); div.remove();
-
删除属性节点
删除属性节点,无返回值。
例如我们删除 id 属性值为 id 的元素中 class 属性。
var div = document.getElementById('id'); div.removeAttribute('class');
删除属性节点,有返回值。例如我们删除 id 属性值为 id 的元素中 class 属性。
var div = document.getElementById('id'); var attribute = div.getAttributeNode('class'); div.removeAttributeNode(attribute);
插入
-
在父节点的最后一个子节点后面插入新的节点
例如我们创建一个新节点插入到 body 节点中。
var newNode = document.createElement('div'); document.body.appendChild(newNode);
-
在指定元素节点之前插入一个新元素节点。
例如我们在 id 属性值为 id 的元素前面添加一个新元素。
var newNode = document.createElement('div'); var div = document.getElementById('id'); document.body.insertBefore(newNode, div);
-
在指定元素中添加一个属性节点,如果元素中已有该属性改变属性值。例如我们在 id 属性值为 id 的元素中添加一个属性名为 class 的属性节点。
var div = document.getElementById('id') div.setAttribute('class', 'white');//第一个参数属性名,第二个参数属性值。
结语
以上就是 DOM 操作的常用方法,希望本文能让大家重新了解基本的 DOM 操作。
之后,我会带来一系列的文章,来讲解 React 是如何利用这些 DOM 操作进行视图更新的。