700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > html dom节点取父节点 JavaScript DOM父子兄节点操作必看详解

html dom节点取父节点 JavaScript DOM父子兄节点操作必看详解

时间:2024-05-18 06:03:42

相关推荐

html dom节点取父节点 JavaScript DOM父子兄节点操作必看详解

首先我们知道网页中的所有内容都是节点(标签、属性、文本、注释等) ,之前我们已经说过了一些元素的获取方法

比如element.getElementById(),element.querySelector()等等一些元素的获取方法 ,通过这些方法我们会发现我们在获取元素的时候特别麻烦 ,尤其在有非常多的元素需要一一获取的时候 ,我们必须先获取到父盒子再通过父盒子才能获取到子盒子 ,这时你会发现 ,用起来特别繁琐 ,而且逻辑性也不强

元素获取

那我们能不能直接通过节点层级关系来获取元素呢?答案是当然可以 ,而且通过节点获取元素 ,会更加简单方便 ,更富有逻辑性 ,但是还是要配合之前说的元素的获取方法来使用 ,首先获取到元素 ,才能获取他的子节点和父节点.

在HTML DOM 树中的所有节点均可通过 JavaScript 进行访问,所有 HTML 元素(节点)均可被修改,也可以创建或删除。

DOMshu

一般地,节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)这三个基本属性。节点的类型有 ,元素节点(HTML) ,属性节点(src属性等)和文本节点(内容 ,文字 ,空格) 三种 ,利用 DOM 树可以把节点划分为不同的层级关系,常见的是父子兄层级关系 ,在DOM 中,节点使用 node 来表示。

下面我们来看看怎么通过节点来获取DOM元素

1.父级节点获取

语法 :node.parentNode(parent父node)

2.子节点获取

语法 :parentNode.childNodes 和 parentNode .children

区别:

parentNode.childNodes 返回的是包含指定节点的所有子节点的集合(包括元素节点和文本节点等) ,必须专门处理才能拿到想要的子节点

parentNode .children返回所有子节点,但是只返回元素节点 ,不会返回文本内容节点所以一般使用parentNode .children

一组元素看看ul的父子节点怎么获取

对比两种获取子节点方法的区别

对比区别拿到的元素节点

在开发中 ,我们拿到对应的元素节点才能对该节点去进行下一步的操作 ,所以想要改变网页 ,必须能够获取到对应节点

百度贴吧的下拉框

下面让我们通过节点操作来做一个下拉框

元素结构

节点操作

百度贴吧下拉框

3.获取兄弟节点

语法1 :node .nextSibling(获取当前元素的下面的兄弟)和node .previousSibling这两种方法获取的都是兄弟节点的集合 ,也就是说获取的元素既包括元素节点 ,也包括文本节点 ,使用时必须特殊处理

语法2:node nextElementSibling和node previousElementSibling ,这两种方法获取到的只有对应元素兄弟元素节点 ,常用这种

对比两种方法

区别

获取节点的常用方式就是获取元素的父子兄关系的节点 ,除了节点获取外通常 ,我们也能创建和删除节点

下面让我们来看看 ,怎么来创建节点

创建和添加节点

语法1:创建节点document.createElement(指定要创建的元素)

语法2:添加节点用node 父级 child 是子级

node.appendChild(child) 后面追加元素 类似于数组中的push

node.insertBefore(child, 指定在谁前面添加元素)在前面添加元素

用法:

评论时创建和添加<li></li>

创建和添加评论

先创建元素再添加元素

我们每评论一条就会创建和添加一个li元素 ,那么怎么来删除评论呢? 下面就来看看如何删除节点

删除节点

语法:node.removeChild() 方法从 node节点中删除一个子节点,返回删除的节点。

右边可以看到创建li在增加删除li减

点击删除按钮a删除他的父节点li

复制(克隆)节点

语法:node.cloneNode();

注意:

node.cloneNode(false)括号为空或者里面是false浅拷贝 只复制标签元素不复制里面的内容

node.cloneNode(true); 括号为true深拷贝 复制标签复制里面的内容

复制元素节点并添加到页面s

克隆后添加到页面

举报/反馈

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。