JS入门(DAY 07) PS:纯个人笔记, 批评欢迎, 喷子勿扰

42 阅读2分钟

DOM(Document Object Model)

操作文档流相关的属性和方法

获取元素

  • 非常规元素
  1. html: document.documentElement
  2. head: document.head
  3. body: document.body
  • 常规元素
  1. 根据元素 id 获取: document.getElementById('id')
  2. 根据元素 类名 获取: document.getElementByClassName('类名')
  3. 根据元素 标签名 获取: document.getElementByTagName('标签名')
  4. 根据 选择器 获取一个: document.querySelector('选择器')
  5. 根据 选择器 获取一组: document.querySelectorAll('选择器')

操作元素样式

行内样式 和 非行内样式

  • 获取元素行内样式: element.style.样式名
  • 获取元素非行内样式: window.getComputedStyle(element).样式名
  • 设置元素行内样式: element.style.样式名 = 样式值

操作元素属性

  • 操作原生属性
  1. 获取: 元素.属性名
  2. 设置: 元素.属性名 = 值
  • 操作特殊的原生属性(checked/selected/...)
  • 自定义属性操作
  1. 设置: 元素.setAttribute(key, value)
  2. 获取: 元素.getAttribute(key)
  3. 删除: 元素.removeAttribute(key)
  • H5自定义属性
  1. 设置: 元素.dataset.key = value
  2. 获取: 元素.dataset.key
  3. 删除: delete 元素.dataset.key

操作元素类名

  • className
  1. 设置: 元素.className = 'value'
  2. 获取: 元素.className
  3. 追加: 元素.className += 'value'
  • classList
  1. 添加: 元素.classList.add(类名)
  2. 删除: 元素.classList.remove(类名)
  3. 切换: 元素.classList.toggle(类名)

操作文本内容

  • innerText
  1. 获取: 元素.innerText
  2. 设置: 元素.innerText = 值
  • innerHTML
  1. 获取: 元素.innerHTML
  2. 设置: 元素.innerHTML
  • value
  1. 获取: 表单元素.value
  2. 设置: 表单元素.value = 值

获取元素尺寸

  • offset 一套(内容+padding+border)
  1. 元素.offsetWidth
  2. 元素.offsetHeight
  • client 一套(内容+padding)
  1. 元素.clientWidth
  2. 元素.clientHeight

获取元素偏移量

  • offset 一套
  1. offsetParent
  2. offsetLeft
  3. offsetTop
  • client 一套
  1. clientLeft(左边框)
  2. clientTop(上边框)

获取可视窗口尺寸

  • BOM 级别的获取(包含滚动条在内的尺寸)
  1. window.innerWidth
  2. window.innerHeight
  • DOM 级别的获取(不包含滚动条在内的尺寸)
  1. window.documentElement.clientWidth
  2. window.documentElement.clientHeight

DOM节点

获取节点

  1. childNodes
  2. children
  3. firstChild
  4. firstElementChild
  5. lastChild
  6. lastElementChild
  7. previousSibling
  8. previousElementSibling
  9. nextSibling
  10. nextElementSibling
  11. parentNode
  12. parentElement
  13. attributes

创建节点

  1. document.createElement('标签名')
  2. document.createTextNode('文本内容')

插入节点

  1. 父节点.appendChild(子节点)
  2. 父节点.insertBefore(要插入的子节点, 子节点)

删除节点

  1. 父节点.removeChild(要移除子节点)
  2. remove()

替换节点

  1. 父节点.replaceChild(换上节点, 换下节点)

克隆节点

  1. 节点.cloneNode(参数)