Dom

Dom的概述

Dom文档对象模型,顾名思义他就是用于操作对应的文档化的,也就是操作你写的html文档.Dom是一个遵从文档流的语句.所以他是同步机制

Dom的分类

domcument dom操作中最大的对象(表示当前操作的html文档)

element 元素对象 (表示的是对应的标签元素)

attribute属性对象(表示的所有的html标签里面的属性)

text文本对象(表示在html代码里面写的所有文本)


document(文档对象)


获取通过对应的方法来获取element元素

document.getElementById 通过id获取对应的元素(element)

document.getElementsByClassName 通过className获取 (HTMLCollection)

document.getElementsByTagName 通过标签名获取(HTMLCollection)

document.getElementsByName 通过name属性获取 (NodeList)

document.querySelector 通过选择器获取第一个 (Element)

document.querySelectorAll 通过选择器获取所有(NodeList)

document.getRootNode 获取根节点(Node)

创建的相关方法 创建对应的节点对象

 document.createElement创建元素节点

document.createAttribute 创建属性节点

document.createTextNode 创建文本节点

属性

获取属于文档的相关内容

document.body 获取body

document.head 获取head

document.froms 获取froms(返回一个htmlCollection)

Element 元素对象

方法

获取的方法(在元素里面获取元素)(跟对应的document的获取元素方法一致)

添加的方法(在元素里面的添加元素或者添加text 添加到对应的元素中)

添加到末尾的方法

append (追加多个支持里面传入字符串(字符串会被识别成文本))

appendChild(追加一个 支持node对象)

插入到某个子元素之前

insertBefore 插入元素到某个子元素之前 参数1需要传入的元素、参数2子元素)

insertAdjacentElement 插入element

insertAdjacentHTML 插入HTML代码

insertAdjacentText 插入文本

//获取元素

var box = document.getElementById('box')

//第一个是对应需要插入的节点 第二个是对应的子节点

var link = box.getElementsByClassName('link')[0]

var strong1 = document.createElement('strong')

box.insertBefore(strong1,link)

//插入只针对第一层的子元素

var b = document.getElementById('box').getElementsByClassName('link')

[0].getElementsByTagName('b')[0]

box.insertBefore(strong1,b) //错误的 他是孙子节点

// 'beforebegin': 在该元素本身的前面。

// 'afterbegin':只在该元素当中,在该元素第一个子孩子前面。

// 'beforeend':只在该元素当中,在该元素最后一个子孩子后面。

// 'afterend': 在该元素本身的后面。

var hello = document.createElement('hello')

box.insertAdjacentElement('beforebegin',hello)

box.insertAdjacentElement('afterbegin',hello)

box.insertAdjacentElement('beforeend',hello)

box.insertAdjacentElement('afterend',hello)

box.insertAdjacentHTML('beforebegin','<b>我是插入的之前的html代码</b>')

box.insertAdjacentText('beforebegin','文本')

删除方法

remove 删除自身

removeChild 删除子元素

//删除自己里面内容都删除

box.remove()

//删除子元素 传递对应的子元素 

修改方法

replaceChild 一对一替换

replaceChildren 替换所有(可以传递多个参数 支持字符串)

克隆的方法

cloneNode

<div>

<a href="hello">你好</a>

</div>

<script>

var box = document.querySelector('div')

//克隆对应的元素 传递的参数是一个布尔类型的值 为true表示深度克隆 为false表示浅克隆

(false)

var element = box.cloneNode()//只克隆对应的第一次 默认为false

console.log(element);//<div></div>

var element = box.cloneNode(true)//只克隆所有的内容包含对应的里面文本和元素及相关事

console.log(element);//完整克隆

</script>

属性操作的相关方法 (对于所有的属性都可以进行操作)

获取 getAttribute(attrName)

设置 setAttribute(attrName,attrValue)

删除 removeAttribute(attrName)

属性

基础属性

id 属性 (获取/设置 id值)

className 属性 (获取/设置 class值)

style 属性 (获取对应的一个样式对象 / 设置相关样式)

title 属性 (获取/设置 title属性)

tagName 属性 (只读属性)

innerHTML 属性 (显示的html内容 编译对应的html代码)

innerText 属性 (显示的文本 不能编译html代码)

节点相关属性(只读属性)

previousElementSibling 前面的元素

nextElementSibling 后面的元素

parentElement 父元素

children 子元素集合 (HTMLCollection)

相关获取元素内属性节点集合的属性(只读属性)

attributes

Node

DOM中的节点分类

元素节点 element

属性节点 attributeNode

文本节点 textNode

节点相关的属性

节点划分的属性 (*)

nodeName 节点名

nodeType 节点类型

nodeValue 节点值


节点关系的属性 (*)

父子

parentElement 父元素

parentNode 父节点

childNodes 所有的子节点(包含元素节点和文本节点)

children 所有的元素节点

兄弟关系

previousElementSibling 上一个元素节点

previousSibling 上一个节点

nextElementSibling 下一个元素节点

nextSibling 下一个节点

第一个子节点和最后一个子节点

firstChild 第一个子节点

firstElementChild 第一个子元素节点

lastChild 最后一个子节点

lastElementChild 最后一个子元素节点

<div>

hello

<a href="">你好</a>

<p>

<a href="">前面的元素节点</a>

你好

<a href="">后面的元素节点</a>

</p>

你好

</div>

<script>

//节点的相关关系

var p = document.querySelector('p')

//父子关系

//获取对应的父节点 (一般情况俩者是一样的)

console.log(p.parentElement); //得到父元素

console.log(p.parentNode); //得到父节点

节点相关的方法 (*)

replaceChild 替换子节点

appendChild 添加子节点

removeChild 删除子节点

insertBefore 插入节点到子节点前面

cloneNode 克隆节点

replaceChildren 替换所有子节点

append 添加多个子节点

remove 移除自己及所有的子节点

操作属性节点的方法

setAttributeNode (属性节点 Attribute对象)

getAttributeNode (返回的是一个属性节点 Attribute)

removeAttributeNode (根据对应的属性节点删除)

删除空文本节点的相关方法

//获取子节点

console.log(p.parentNode.childNodes); //获取子节点 (包含元素 包含文本) nodeList

俩个文本 加上一个p标签

console.log(p.parentNode.children); //获取子元素 (只包含元素节点)HTMLCollection

p标签

//兄弟关系

//上一个

console.log(p.previousElementSibling); //上一个元素节点

console.log(p.previousSibling); //上一个节点 (空文本也算节点)

// 下一个

console.log(p.nextElementSibling); //下一个元素节点

console.log(p.nextSibling); //下一个节点

//第一个子节点

console.log(p.firstChild); //空文本

console.log(p.firstElementChild);//a标签

//最后一个子节点

console.log(p.lastChild); //空文本

console.log(p.lastElementChild); //a标签

</script>

<div id="box"></div>

<script>

//运用相对较少

var box = document.getElementById('box')

//获取属性节点 返回时一个attribute对象

//传入一个string类型的属性名

console.log( box.getAttributeNode('id'));

console.log( box.getAttributeNode('id').value);

//设置对应的属性节点 传入的是一个attribute对象

var attr = document.createAttribute('class')

attr.value = 'content'

box.setAttributeNode(attr)

//removeAttributeNode 根据属性节点对象来删除删除对应的属性节点

box.removeAttributeNode(box.attributes[0]) //删除第一个属性节点

</script>

<div>

<a href="">嘻嘻</a>

<b>哈哈</b>

hello

</div>

<script>

var div = document.querySelector('div')

//获取div的所有子节点

console.log(div.childNodes.length);//5

//传入一个元素 删除里面的空文本节点

function deleteEmptyTextNode(element){

//获取所有的子节点

var nodes = element.childNodes

//遍历所有的子节点

for(var node of nodes){

//进行判断 判断当前是否为空文本节点

if(node.nodeType == 3 && /^\s+$/.test(node.nodeValue)){

//删除对应的空文本节点

element.removeChild(node)

}

}

}

deleteEmptyTextNode(div)

console.log(div.childNodes.length);//3

</script>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容