常见的Dom操作
1.什么是DOM?
DOM又称文档对象模型( DOM, Document Object Model )主要用于对HTML和XML文档的内容进行操作。DOM描绘了一个层次化的节点树,通过对节点进行操作,实现对文档内容的添加、删除、修改、查找等功能。
2.什么是DOM树?
DOM树有两种,分别为节点树和元素树。
节点树:把文档中所有的内容都看成树上的节点;
元素树:仅把文档中的所有标签看成树上的节点。
3.DOM常用操作
1.查找节点
|
document.getElementById('id属性值'); |
返回拥有指定id的第一个对象的引用 |
|
document/element.getElementsByClassName('class属性值'); |
返回拥有指定class的对象集合 |
|
document/element.getElementsByTagName('标签名'); |
返回拥有指定标签名的对象集合 |
|
document.getElementsByName('name属性值'); |
返回拥有指定名称的对象结合 |
|
document/element.querySelector('CSS选择器'); |
仅返回第一个匹配的元素 |
|
document/element.querySelectorAll('CSS选择器'); |
返回所有匹配的元素 |
|
document.documentElement |
获取页面中的HTML标签 |
|
document.body |
获取页面中的BODY标签 |
|
document.all[''] |
获取页面中的所有元素节点的对象集合型 |
2.新建节点
|
document.createElement('元素名'); |
创建新的元素节点 |
|
document.createAttribute('属性名'); |
创建新的属性节点 |
|
document.createTextNode('文本内容'); |
创建新的文本节点 |
|
document.createComment('注释节点'); |
创建新的注释节点 |
|
document.createDocumentFragment( ); |
创建文档片段节点 |
3.添加新节点 注(添加新节点和新建节点不同,新建的节点如果不添加到DOM中,是不会有任何效果的)
|
parent.appendChild( element/txt/comment/fragment ); |
向父节点的最后一个子节点后追加新节点 |
|
parent.insertBefore( newChild, existingChild ); |
向父节点的某个特定子节点之前插入新节点 |
|
element.setAttributeNode( attributeName ); |
给元素增加属性节点 |
|
element.setAttribute( attributeName, attributeValue ); |
给元素增加指定属性,并设定属性值 |
4.删除节点
|
parentNode.removeChild( existingChild ); |
删除已有的子节点,返回值为删除节点 |
|
element.removeAttribute('属性名'); |
删除具有指定属性名称的属性,无返回值 |
|
element.removeAttributeNode( attrNode ); |
删除指定属性,返回值为删除的属性 |
5.修改节点
|
parentNode.replaceChild( newChild, existingChild ); |
用新节点替换父节点中已有的子节点 |
| element.setAttributeNode( attributeName ); | 若原元素已有该节点,此操作能达到修改该属性值的目的 |
| element.setAttribute( attributeName, attributeValue ); | 若原元素已有该节点,此操作能达到修改该属性值的目的 |
不多说了,直接上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h2>创建文本节点</h2>
<button onclick="addText()">创建文本节点</button>
<p></p>
<script>
function addText(){
//创建文本节点
var a=document.createTextNode('this is a 文本'); //创建文本节点
document.getElementsByTagName('p')[0].appendChild(a);//添加文本节点
document.getElementsByTagName('button')[0].innerHTML='你看我变了没?';//新增文本内容
var b=document.createAttribute('id'); //创建一个属性节点 也可以在创建时给他赋值
b.value='123'; //给这个属性节点赋值
document.getElementsByTagName('p')[0].setAttributeNode(b); //给p元素设置新的属性
document.getElementsByTagName('button')[0].setAttribute('id','buttonId'); //给button元素设置id属性
//创建新元素
var c=document.createElement('div'); //创建一个新元素div
var cul=document.createElement('ul'); //创建一个新元素 ul
var culli=document.createElement('li'); //创建一个新元素 li
culli.innerHTML='6'; // 新增文本内容
c.appendChild(cul).appendChild(culli); //添加子节点
document.body.appendChild(c); //往body中添加子节点 //等同于:
//var d="<ul><li>6</li>"; //字符串
//c.append(d); //jquery append方法
//document.body.appendChild(c); }
</script>
</body>
</html>
常见的Dom操作的更多相关文章
- JavaScript常见原生DOM操作API总结
[TOC] 最近面试的时候被这个问题给卡了,所以抽时间好好复习一下. 几种对象 Node Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法.常见的Node ...
- JS中常见原生DOM操作API
摘自:https://blog.csdn.net/hj7jay/article/details/53389522 几种对象 Node Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它, ...
- 常见的dom操作----原生JavaScript与jQuery
1.创建元素 文本节点 JavaScript: document.createElement(),只接收一个参数,创建后需要手动将其添加到文档树中,例如: var newDiv = document. ...
- 前端页面卡顿?或是DOM操作惹的祸,需优化代码
文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...
- DOM操作优化
文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...
- 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j
解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...
- DOM操作 append prependTo after before
通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作.但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了. 试想下这样的情况:如果我们通过AJAX获取到数 ...
- JQuery基础DOM操作
DOM创建节点及节点属性 通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作.但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了. 试想下这样的情况:如 ...
- DOM操作--表格点击行变色
点击表格行变色,这种网页效果应该还是比较常见的.大家应该看见了,我这里的效果是用DOM操作实现的,那么很多人会问什么是DOM操作,贴出代码之前我就和大家解释一下什么是DOM操作: DOM是Docume ...
随机推荐
- 原生js实现雪花飘落效果
雪花飘落的效果实现步骤:1.使用setInterval定时器每800毫秒创建一个雪花:2.把每一个雪花作为参数传进动态下落的方法中即可. <style> *{padding: 0;marg ...
- 【Linux】 静态函数库设计
一.外部函数来源-- 函数库&系统调用 二.函数库分类 静态函数库 --多份拷贝 动态函数库 --单份拷贝 区别 链接方式区别 三.函数库存放位置 Linux应用程序使用的主要函数库均存放于/ ...
- 【Linux】Linux 找回Root用户密码
Root密码破解 Linux 忘记Root密码 ? 技术学习基本原则:不作恶 一.破解步骤 1.在系统启动时进入grub选项菜单 2.在grub选项菜单按e进入编辑模式 3.编辑kernel那行添加/ ...
- OOM android
1.[原创]Android 系统稳定性 - OOM(一) 2.[原创]Android 系统稳定性 - OOM(二) 3.Android内存泄露分析(MemoryAnalyzer工具)
- zan-framework mysql连接
①根据文档内容要配置sqlmap连接池的读写白名单 http://doc.zanphp.io/zh/libs/connection_pool.html 示例代码 // demo.demo.demo_s ...
- WAKE-WIN10-SOFT-python配置
1,anaconda下载,安装 1,1 官网:https://www.continuum.io/downloads 下载:https://repo.continuum.io/archive/ win1 ...
- mysql:删除表数据drop、truncate和delete的用法
程度从强到弱 1.drop table tb drop将表格直接删除,没有办法找回 2.truncate (table) tb 删除表中的所有数据,不能与where一起使用 ...
- 我的HTML总结之HTML发展史
HTML是Web统一语言,这些容纳在尖括号里的简单标签,构成了如今的Web. 1991年,Tim Berners-Lee编写了一份叫做“HTML标签”的文档,里面包含了大约20个用来标记网页的HTML ...
- 小组Scrum第一次冲刺
团队任务描述: 在确定完分组,并对于敏捷开发做了相应的了解之后,我们团队开始了第一次的冲刺.对于我们团队的第一次的 Scrum冲刺,我们团队开展了团队会议.首先,我们明确了我们的目标,对其进行了相对初 ...
- OC typedef(起别名)
// #define Integer int // 给基本数据类型起别名 void test() { typedef int Integer; typedef Integer MyInteger; t ...