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 : 克隆当前节点,包含内容

相关文章
|
27天前
|
JavaScript 前端开发
低效的DOM操作(js的问题)
低效的DOM操作(js的问题)
|
27天前
|
缓存 JavaScript 前端开发
JavaScript中DOM操作:新手常犯错误与避免策略
【4月更文挑战第1天】本文介绍了JavaScript中DOM操作的基础和新手常犯错误,包括频繁查询DOM、不恰当的遍历、滥用innerHTML、忽视异步与DOM状态以及过度同步更新。建议包括缓存DOM引用、注意文本节点、慎用innerHTML以防止XSS、正确处理异步和批量更新。遵循最佳实践,开发者能提升代码质量和应用性能。
24 2
|
2月前
|
JavaScript 前端开发
使用jQuery操作DOM元素
使用jQuery操作DOM元素
16 1
|
2月前
|
JavaScript 前端开发
JavaScript操作DOM元素
JavaScript操作DOM元素
12 1
|
2月前
|
JavaScript 前端开发
如何使用 JavaScript 操作 DOM?
如何使用 JavaScript 操作 DOM?
16 0
|
1天前
|
JavaScript 前端开发 开发者
【Web 前端】如何操作DOM元素?
【4月更文挑战第22天】【Web 前端】如何操作DOM元素?
|
5天前
|
JavaScript
js_操作dom(委托和冒泡事件)
js_操作dom(委托和冒泡事件)
8 0
|
8天前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
15天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
16 0
|
15天前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下浏览器的同源策略。
**同源策略**是浏览器安全基石,它阻止脚本跨不同协议、域名或端口访问资源,防止恶意行为。例如,HTTP页面无法直接用JS获取HTTPS页面内容。**CORS**允许跨域请求,但需服务器配合设置,通过`document.domain`属性可配置,但仍受限于服务器配置。
15 4