DOM基础

作者: 没了提心吊胆的稗子 | 来源:发表于2019-07-07 12:55 被阅读0次

DOM:document object model 文档对象模型,提供一些属性和方法让我们可以操作DOM元素

获取DOM元素的方法

  • document.getElementsById 一个元素
  • [context].getElementsByTagName 元素集合
  • [context].getElementsByClassName 元素集合
  • document.getElementsByName 节点集合
  • document.documentElement 获取整个HTML对象
  • document.body 获取整个BODY对象
  • document.head 获取整个HEAD对象
  • [context].querySelector 一个元素对象 // 获取该模式匹配的第一个元素
  • [context].querySelectorAll 获取元素集合

getElementsById

上下文只能是document,一个页面中的id理论上是唯一的,只有在document这个类上才有这个方法,所以只能用document的实例来获取
1、若有重复的,获取结果是第一个id对应的元素对象
2、IE7及以下版本,会把表单元素的name值当作id识别使用
3、若把JS放在结构的下面,可以直接使用id值来获取这个元素,会把页面中所有相同id的元素都获取到,不推荐

<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div1"></div>
<script>
    console.log(div1);  
</script>
</body>

面试题:获取到所有id为div1的元素集合
// 方案一
console.log(div1); 
// 方案二  通过通配符获取所有页面中的元素
var allList = document.getElementsByTagName('*'),
      result = [];
for (let i = 0; i < allList.length; i++) {
    var item = allList[i];
    item.id === 'div1' ? result.push(item) : null;
}
// 方案三
document.querySelectorAll('#div1');

getElementsByTagName

上下文可以自己指定,获取到所有子孙元素标签名跟参数一致的一个集合,类数组集合

getElementsByClassName

同上 ,但在IE6-8不兼容

getElementsByName

通过name属性获取一组元素,是节点集合NodeList,上下文只能是document
IE浏览器只能识别表单元素的name属性,一般这个属性都用在表单元素上

querySelector/querySelectorAll

IE6-8不兼容,多用于移动端开发,一个方法具备上述所有方法的功能

DOM节点

浏览器会把一个HTML页面中的所有的内容都当做节点node

  • 元素节点:HTML标签
  • 文本节点:文字内容
  • 注释节点:注释内容
  • document文档节点

元素节点

nodeType:1
nodeName:大写标签名(在某些浏览器的怪异模式下会有不同)
nodeValue:null
[curEle].tagName:获取当前元素的标签名(一般都是大写)

文本节点

nodeType:3
nodeName:#text 高版本浏览器中换行,空格等也都算文本节点
nodeValue:文本内容

注释节点

nodeType:8
nodeName:#comment
nodeValue:注释内容

文档节点

nodeType:9
nodeName:#document
nodeValue:null

childNodes

获取当前元素所有的子节点集合,文本,注释节点都会包含

children

获取元素子节点(元素集合),IE6-8下会把注释节点也当作元素节点,其余不会

parentNode

获取当前元素的父节点(元素对象)

previousSibling nextSibling

获取当前节点的前一个兄弟节点(不一定是元素节点,文本注释等也可以),下一个兄弟节点

previousElementSibling nextElementSibling

获取当前节点的前一个兄弟节点(一定是元素节点),下一个兄弟节点,IE6-8不兼容

firstChild lastChild

当前元素所有子节点中的第/最后一个(不一定是元素节点,文本注释等也可以)

firstElementChild lastElementChild

当前元素所有子节点中的第/最后一个(一定是元素节点),IE6-8不兼容

DOM增删改查

document.createElement

在JS中动态创建一个HTML标签

appendChild

container.appendChild(newElement) 把新元素添加到容器末尾

insertBefore

container.insertBefore(newElement, oldElement) 把新元素添加到旧元素之前

removeChild

container.removeChild(element) 把当前元素中的某一个元素移除

replaceChild

container.replaceChild(newElement, oldElement) 把当前元素中的某一个元素用新元素替换

cloneNode

element.cloneNode(false/true) 克隆元素 false只克隆当前元素,true会克隆当前元素及其子孙元素,克隆只能克隆结构,不能克隆事件

set/get/removeAttribute

给当前元素设置/获取/移除属性,一般操作的都是自定义属性
element.setAttribute('myIndex', 0)
element.getAttribute('myIndex')
element.removeAttribute('myIndex')
使用element.myIndex = 0和element.setAttribute('myIndex', 0)设置自定义属性的区别
element.myIndex是把当前元素当作一个普通对象来设置新的属性名,和页面结构中的DOM元素没关系
element.setAttribute('myIndex', 0)当作特殊的元素对象处理,设置的自定义属性和页面结构中的DOM元素映射在一起的
元素对象的内置属性大部分都和页面标签存在映射关系

相关文章

  • per-courseDOM介绍

    DOM 文档对象模型 D 表示文档,DOM的物质基础O 表示对象,DOM的思想基础M 表示模型,DOM的方法基础...

  • javascript基础系列:DOM相关的技术知识点

    javascript基础系列:DOM相关的技术知识点 DOM及其基础操作 DOM: document object...

  • DOM基础

    DOM基础 第一章:DOM概述 1.1DOM以及节点概念 ​ 文档对象模型DOM(Document Object ...

  • 虚拟DOM

    虚拟DOM 基础概念: virtual DOM是对真实DOM的描述和映射 当Virtual DOM改变后,我们得到...

  • HTML DOM基础解析

    DOM基础知识 1. HTML DOM简介 DOM 是 Document Object Model(文档对象模型)...

  • Dom基础1

    DOM基础 DOM简介、DOM标准、DOM节点 获取元素的子节点:childNodes、兼容性问题火狐不兼容,可以...

  • React基础篇之虚拟DOM

    Hello World JS创建虚拟DOM JSX创建虚拟DOM 虚拟DOM与真实DOM 下一篇:React基础篇...

  • 19.DOM 进阶

    学习要点: 1.DOM 类型2.DOM 扩展3.DOM 操作内容 DOM 自身存在很多类型,在 DOM 基础课程中...

  • 操作DOM—DOM基础

    一、访问节点 1)相对当前节点访问节点 提示每个节点都有一个childNodes属性,改属性保存着一个nodeLi...

  • JavaScript--DOM基础

    JavaScript--DOM基础 一、DOM查找方法 1.document.getElementById()语法...

网友评论

      本文标题:DOM基础

      本文链接:https://www.haomeiwen.com/subject/gzcbhctx.html