第九天 DOM

作者: 晚月川 | 来源:发表于2020-03-14 19:55 被阅读0次

JS中常用的DOM操作

DOM:document object model 文档对象模型(提供一系列的属性和方法,供我们获取和操作DOM元素)

1.获取DOM的方式

  • document.getElementById([元素的ID]):在整个文档中,根据元素的ID,获得这个元素对象
    • document是获取元素的上下文(获取元素的范围),getElementById方法的上下文只能是document
    • 获取到的结果是一个对象(堆内存:里面存储着很多内置的属性和方法)
  • [context].getElementsByTagName([标签名]):在指定的上下文中,基于元素的标签名获取一组元素集合
    • 获取的结果是HTMLCollection元素集合
  • [context].getElementsByClassName([样式类名]):在指定上下文中,基于样式类名获取对应的元素集合
    • 不兼容IE6~8低版本浏览器
  • document.getElementsByName([NAME属性值]):根据元素的NAME属性值,在整个文档中获取一组元素集合
    • 在IE浏览器中(9及以下)只对表单元素作用
  • document.documentElement:获取整个HTML元素对象(HTML是页面的根节点)
  • document.body:获取整个BODY元素对象
  • document.head:获取整个HEAD元素对象

不兼容IE6~8低版本浏览器,可以根据选择器(类似于CSS选择器)快速获取元素和元素集合的办法:

  • [context].querySelector([SELECTOR]) 获取一个元素对象
  • [context].querySelectorAll([SELECTOR]) 获取一组元素集合
    在不考虑兼容的情况下,这两个方法就足以获取我们需要的元素对象和元素集合了

2.获取DOM节点的属性和方法

我们认为在页面中所有呈现的内容,都是DOM文档中的一个节点(node),例如:元素标签是元素节点、注释的内容是注释节点、文本内容是文本节点、document是文档节点...

节点和节点之间的关系属性

描述节点和节点之间的关系属性,基于这些属性可以获取到指定的节点

  • [CONTAINER].childNodes:获取当前容器中所有的子节点(包含各种类型的节点)
  • [CONTAINER].children:获取当前容器中所有的元素子节点(只有元素标签的,在IE低版本浏览器中,也会把注释当做元素节点)
  • [NODE].parentNode:获取某一个节点的父节点
  • [NODE].previousSibling:获取某一个节点的上一个哥哥节点
  • [NODE].previousElementSibling:获取某一个节点的上一个哥哥元素节点(不兼容IE低版本)
  • [NODE].nextSibling:获取某一个节点的下一个弟弟节点
  • [NODE].nextElementSibling:获取某一个节点的下一个弟弟元素节点(不兼容IE低版本)
  • [CONTAINER].firstChild:获取容器中第一个子节点
  • [CONTAINER].firstElementChild:获取容器中第一个元素子节点(不兼容IE低版本)
  • [CONTAINER].lastChild:获取容器中最后一个子节点
  • [CONTAINER].lastElementChild:获取容器中最后一个元素子节点(不兼容IE低版本)

3.关于DOM元素中的增加/删除/修改

  • document.createElement([标签名]):动态创建一个DOM元素

  • [CONTAINER].appendChild([元素]):把元素动态插入到指定容器的末尾

  • [CONTAINER].insertBefore([新元素],[原始页面中的元素]):把新创建的元素放置到指定容器原始页面元素的前面 [原始页面中的元素]肯定在[CONTAINER]容器中

  • [CONTAINER].removeChild([元素]):在指定容器中移除元素

  • document.createTextNode():创建一个文本节点

  • ...

  • 设置元素的属性/自定义属性

    • 元素.xxx=xxx
    • 元素.setAttribute(xxx,xxx) setAttribute/getAttribute/removeAttribute

4.修改DOM元素的样式

  • 元素.style.xxx :修改(获取)当前元素的行内样式
    • 操作的都是行内样式,哪怕把样式写在样式表中,只要没有写在行内上,也获取不到
  • 元素.className:操作的是当前元素的样式类,基于样式类的管理给予其不同的样式

5.给DOM元素设置内容

  • innerHTML / innerText:给非表单元素设置或者操作其内容
  • value:操作表单元素的内容

给元素设置自定义属性

  1. 每一个元素都是一个对象(堆内存),我们向堆内存中设置自定义属性即可
  • 元素.xxx = xxx 或者 元素[xxx]=xxx
  • 对象键值对的操作
  1. 每一个元素也是一个标签,我们可以操作其DOM结构,给结构上新增自定义的属性
  • 元素.setAttribute('xxx', 'xxx')

两种方案的原理是不一样的,一个操作的是堆内存,一个操作的是DOM结构

相关文章

  • 第九天 DOM

    JS中常用的DOM操作 DOM:document object model 文档对象模型(提供一系列的属性和方法,...

  • dom 级别和dom 事件处理

    dom级别:dom0 dom1 dom2 dom3 dom事件处理:dom0 dom2 dom3 (1级DOM标准...

  • WY-DOM编程

    DOM Document Object Model DOM Core DOM HTML DOM Style DOM...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级、DOM1级、DOM2级、DOM3级DOM事件:DOM0级事件处理、...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级,DOM1级,DOM2级和DOM3级DOM事件:DOM0级事件处理,...

  • js红包雨活动

    function Block( dom ){ this.dom = dom; //dom this.parentW...

  • DOM操作的分类

    DOM操作分为三个方面,即DOM Core(核心)、HTML-DOM和CSS-DOM。 DOM Core DOM ...

  • 虚拟 DOM 和 diff 算法

    虚拟 DOM(Virtual DOM) 通过 JS 对象表示 DOM 结构,虚拟DOM 是对 DOM 的抽象 通常...

  • jQuery——DOM

    DOM操作分类 一般来说,DOM操作分为3个方面,即DOM Core、HTML-DOM、CSS-DOM。 DOM ...

  • JavaScript高级程序设计前四章

    1. DOM级别 1.1 DOM1级 由DOM核心(DOM Core)和DOM HTML两个模块组成。 DOM核心...

网友评论

    本文标题:第九天 DOM

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