DOM 操作

简介: DOM 操作

获取元素尺寸

offsetWidth / offsetHeight

  1. 节点对象.offsetWidth : 获取当前节点对象的相对宽度(width + border + padding)
  2. 节点对象.offsetHeight : 获取当前节点对象的相对对高度(height + border + padding)

clientWidth / clientHeight

  1. 节点对象.clientWidth : 获取当前节点对象的可视区宽度(width + padding)
  1. 节点对象.clientHeight : 获取当前节点对象的可视区高度(height + padding)

获取元素偏移量

offsetLeft / offsetTop

  1. offsetLeft : 相对左边的距离
  • 如果父元素没有定位,则当前元素相对于页面左边(body)的left值
  • 如果父元素有定位,则当前元素相对于父元素左边的left值。
  1. offsetTop : 相对上边的距离
  • 如果父元素没有定位,则当前元素相对于页面上边(body)的top值
  • 如果父元素有定位,则当前元素相对于父元素上边的top值。

clientLeft / clientTop

  1. clientLeft : 表示一个元素的左边框的宽度,以像素表示。
  1. clientTop : 表示一个元素的上边框的宽度,以像素表示。

DOM节点及以节点操作

DOM节点

  • DOM 的节点我们一般分为常用的三大类 素节点 / 文本节点 / 属性节点
  • 什么是分类,比如我们在获取元素的时候,通过各种方法获取到的我们叫做元素节点(标签节点)
  • 比如我们标签里面写的文字,那么就是文本节点
  • 写在每一个标签上的属性,就是属性节点

获取节点

  1. firstChild : 第一个子节点
  2. firstElementChild : 第一个元素子节点
  3. lastChild : 最后一个子节点
  4. lastElementChild : 最后一个元素子节点
  5. previousSibling : 前一个兄弟节点
  6. previousElementSibling : 前一个元素兄弟节点
  7. nextSibling : 下一个兄弟节点
  8. nextElementSibling : 下一个元素兄弟节点
  9. parentNode : 父节点
  10. childNodes : 获取到所有的元素子节点 与 文本子节点
//删除空白文本子节点
function noSpaceNode(node) {
    //获取所有子节点
    var childs = node.childNodes;
    //遍历所有的子节点
    for (var i = 0; i < childs.length; i++) {
        //文本                            空白
        if (childs[i].nodeType === 3 && /^\s+$/.test(childs[i].nodeValue)) {
            //删除空白节点
            node.removeChild(childs[i]);
        }
    }
    return node;
}
  1. children : 获取所有的元素子节点

节点属性

nodeType
  • nodeType:获取节点的节点类型,用数字表示
nodeName
  • nodeName:获取节点的节点名称
nodeValue
  • nodeValue: 获取节点的值
汇总
- nodeType nodeName nodeValue
元素节点 1 大写标签名 null
属性节点 2 属性名 属性值
文本节点 3 #text 文本内容

创建节点

  1. document.createElement('标签名') : 创建元素节点
  2. document.createTextNode('文本') : 创建文本节点
  1. document.createDocumentFragment() : 创建文档碎片 (为了减少与页面的交互,提高性能)

插入节点

  1. 父节点.appendChild(子节点) : 将这个子节点追加到父节点中子节点列表的末尾。
  1. 父节点.insertBefore(新节点,指定的旧的节点) : 在指定的旧节点前面插入新节点

修改节点

  1. 父节点.replaceChild(新节点,旧节点) : 替换节点

删除节点

  1. 父节点.removeChild(子节点) : 删除子节点
  1. 当前节点.remove() : 删除当前节点

克隆节点

  1. 当前节点.cloneNode([true]) : 复制节点

false(默认) : 只克隆当前节点,不包含内容。 true : 克隆当前节点,包含内容

相关文章
|
6月前
|
缓存 JavaScript 前端开发
【JavaScript 技术专栏】DOM 操作全攻略:从基础到进阶
【4月更文挑战第30天】本文深入讲解JavaScript与DOM交互,涵盖DOM基础、获取/修改元素、创建/删除元素、事件处理结合及性能优化。通过学习,开发者能掌握动态改变网页内容、结构和样式的技能,实现更丰富的交互体验。文中还讨论了DOM操作在实际案例、与其他前端技术结合的应用,助你提升前端开发能力。
238 0
|
6月前
|
JavaScript 前端开发
低效的DOM操作(js的问题)
低效的DOM操作(js的问题)
22 0
|
5月前
|
JavaScript 前端开发 UED
JavaScript基础-DOM操作:查找、创建、修改
【6月更文挑战第12天】本文介绍了DOM基础,包括查找元素(getElementById、getElementsByClassName等)、创建新节点(createElement、createTextNode)和修改节点(innerText、innerHTML、setAttribute等)。强调了易错点,如ID唯一性、性能考量和安全问题,并提供了代码示例。熟练掌握DOM操作对前端开发至关重要,但应注意性能优化,适时使用框架或库。
58 2
JavaScript基础-DOM操作:查找、创建、修改
|
5月前
|
JavaScript 前端开发
DOM操作有哪些方法可以改变元素的样式?
【6月更文挑战第30天】DOM操作有哪些方法可以改变元素的样式?
38 2
|
5月前
|
JavaScript 前端开发 开发者
DOM操作
【6月更文挑战第30天】DOM操作
33 1
|
4月前
|
JavaScript 前端开发 API
前端框架与库 - jQuery基础与DOM操作
【7月更文挑战第18天】jQuery 是一个简化JavaScript任务的库,以其“write less, do more”理念著称。核心功能包括DOM操作、事件处理和Ajax。DOM操作如选择元素(`$(&quot;p&quot;)`、`$(&quot;#myDiv&quot;)`、`$(&quot;.myClass&quot;)`)、创建及添加元素、修改属性和内容。事件处理如绑定(`click`)和触发(`trigger`)。常见问题涉及`$`符号冲突(使用`jQuery`代替)、异步加载管理和选择器性能优化。了解并规避这些问题能提升jQuery使用效率。
32 0
|
5月前
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
64 2
|
5月前
|
JSON JavaScript 数据格式
技术好文:tabel表格的dom操作
技术好文:tabel表格的dom操作
24 0
|
6月前
|
JavaScript 前端开发
JavaScript 提供了多种方法来操作 DOM(文档对象模型)
【5月更文挑战第11天】JavaScript 用于DOM操作的方法包括获取元素(getElementById, getElementsByClassName等)、修改内容(innerHTML, innerText, textContent)、改变属性、添加/删除元素(appendChild, removeChild)和调整样式。此外,addEventListener用于监听事件。注意要考虑兼容性和性能当使用这些技术。
45 2
|
6月前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。