节点操作简单概述~JS

2023-05-16

1:概述

一般,节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)这三个基本属性。

  • 元素节点nodeType为1

  • 属性节点nodeType为2

  • 文本节点 nodeType为3(文本节点包含文字、空格、换行等)

    这三个节点会返回不同的值,在后期会用来获取相关属性,我实际开发中,节点操作主要操作的是元索节点,nodetype==1的值,HTML所有标签都可以看为一个节点

    2、获取方法

A:利用dom树可以把节点分为不同的层级关系,常见的是父子兄层级关系

B:父级节点

语法:node(获取过来的一个元素). parentNode,parentNode属性可返回某节点的父节点,注意是最近的一个父节点 如果指定的节点没有父节点则返回null

C:子节点

A:获取方法一(麻烦会返回所有节点)

语法:parentNode.childNodes(标准)

对于子节点是一个集合来说返回的是一个伪数组,假如ul里面有4个li就会返回9个节点,因为里面还存在5个txet节点(空格也算是节点),集合里面包含了所有的节点,包括元素节点、文本节点,如果只想要获得里面的元素节点,就需要处理


var ul = document.querySelector("ul");
​
for( var i=0;i<ul.childNodes.length; i++){
​
if(ul.childe[i].nodeyType==1){
​
console.log(ul. childNodes[i]);
​
}
​
}  

过程繁琐不提倡

推荐方法:parentNode.children(parentNode父节点名)

parentNode.children是一个只读属性,返回所有的子元素节点。它只返回子元素节点,其余节点不返回(这个是我们重点掌握的)。 虽然children是一个非标准,但是得到了各个浏览器的支持,因此我们可以使用

我们想要获得第几个li可以采用如下方法

ul.children[0]、ul.children[1]、ul.children[2]

B:获取方法二(麻烦会返回第一个节点包含文字节点)

语法一:parentNode .firstChild 返回第一个子节点,找不到结果返回null。同样也是包含所有的节点。 语法:parentNode. lastChild

返回第一个子节点,找不到结果返回null。同样也是包含所有的节点。

我们只需要获取元素节点就可以了为此出现方法三:

C:获取方法三(IE9以上支持此语法)

语法:parentNode .firstElementChild firstElementchild返回第一个子元素节点,找不到则返回null。

语法:parentNode . lastElementChild lastElementchild返回最后一个子元素节点,找不到则返回null。

下拉菜单利用parentNode.children元素节点制作

源码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        li {
            list-style-type: none;
        }
        
        a {
            text-decoration: none;
            font-size: 14px;
        }
        
        .nav {
            margin: 100px;
        }
        
        .nav>li {
            position: relative;
            float: left;
            width: 80px;
            height: 41px;
            text-align: center;
        }
        
        .nav li a {
            display: block;
            width: 100%;
            height: 100%;
            line-height: 41px;
            color: #333;
        }
        
        .nav>li>a:hover {
            background-color: #eee;
        }
        
        .nav ul {
            display: none;
            position: absolute;
            top: 41px;
            left: 0;
            width: 100%;
            border-left: 1px solid #FECC5B;
            border-right: 1px solid #FECC5B;
        }
        
        .nav ul li {
            border-bottom: 1px solid #FECC5B;
        }
        
        .bg {
            background-color: red;
        }
    </style>
    <ul class="nav">
        <li>
            <a href="#">微博</a>
            <ul class="nae">
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul class="nae">
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul class="nae">
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul class="nae">
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
    </ul>
    <script>
        var nav = document.querySelector(".nav");
        var lis = nav.children;
        for (var i = 0; i < lis.length; i++) {
            lis[i].onmouseover = function() {
                this.children[1].style.display = "block";
            }
            lis[i].onmouseout = function() {
                this.children[1].style.display = "none";
            }
        }
    </script>
</body>

</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

节点操作简单概述~JS 的相关文章

随机推荐

  • 大数据热点分析图源码

    lt style gt body background color 333 map position relative width 746px height 617px margin 30px auto background url ima
  • 关于微信支付和支付宝支付,调试不同的常见问题

    1 首先要知道 xff1a 微信支付 xff0c 电脑端扫描支付 xff0c 手机微信支付 xff0c 用的是一个接口 xff1b 支付宝的即时到账 xff0c 电脑端和手机端的支付 xff0c 使用的是两个不同的接口 xff0c 这点很坑
  • 奔跑的熊大动画效果JS

    利用动画去尝试制作相应的动画效果熊的制作思路在于 xff1a 图片添加了动画效果 xff0c 在时间范围内渐动改变 xff0c 关键帧一直在改变 xff0c 图片被往前拉熊展现奔跑的效果熊奔跑的制作思路 xff1a 基础效果盒子移动到水平居
  • JS中 遍历数组 2022/3/23日志

    lt 遍历数组 xff0c 找出大于20的数组 xff0c 重组新数组 gt lt script gt 创建新数组需要利用 new Array 关键字建立 var array 61 new Array 22 12 64 12 15 122
  • JS·函数

    1 函数语法规则 xff1a 声明部分 function 函数名 xff08 xff09 function为声明函数的关键字 函数体执行代码 xff08 xff09 注意 xff1a 声明函数后需要调用函数否则无效 xff0c 函数不调用自
  • JS中函数与作用域的定义(日志-2022.3.28)

    1 函数中的两种命名方式 xff1a 1 利用函数关键字function自定义函数 xff08 命名函数 xff09 function fu xff08 xff09 fn 2 利用函数表达式 xff08 匿名函数 xff09 var 变量名
  • JS中构造函数

    一 构造函数定义方法 语法规则 xff1a function 构造函数名 xff08 实参 xff09 this 属性名 61 属性值 xff1b this 方法 61 function 实参 普通函数体 xff1b 调用方式 xff1a
  • 构造函数的三种方式以及输出

    构造函数的三种方式以及输出 lt body gt lt 构造函数创建对象 gt lt 该方法一次一次创建多个 gt lt script gt var i 61 0 function Car kg color product skill th
  • JS实现静态计算器(刷新自动更新数值)页面制作与问题总结

    1 JS部分 xff1a var worldTime 61 43 new Date 返回世界时间距现在多久 var nowTime 61 43 new Date time 输出我们定义的时间并且转换为毫秒参与计算 var trueTime
  • 移动端布局基础(html+css+js)

    1 视口 1 布局视口 一般移动设备的浏览器都默认设置了一个布局视口 xff0c 用于解决早期的PC端页面在手机上显示的问题 iOS Android基本都将这个视口分辨率设置为980px xff0c 所以PC上的网页大多都能在手机上呈现 x
  • JS中数组基础对象部分

    1 创建数组的两种方式 1 xff0e 利用数组字面量 var arr 61 1 2 3 console log arr arr1 2 xff0e 利用new Array var arr1 61 new Array 创建了一个空的数组 va
  • 利用indexOf方法去删除重复数组

    利用indexOf方法去删除重复数组 原理 xff1a indexof在数组中去遍历如果有我们需要的元素就会返回元素所在索引号 xff0c 若没有就会返回 1 xff1b 注意在索引时要求调用的参数与数组中的参数应该数据类型的一致 xff0
  • php查询当月sql记录

    以前我在查询数据库今天或昨天 近7天 近30天 本月 上一月数据都是直接通过php来判断了 xff0c 这样感觉是多一个环节了 xff0c 下面我介绍一篇直接使用sql统计出当天 昨天 近7天 近30天 本月 上一月数据语句 现在分享给各位
  • html+css弹性布局

    1 布局原理 flex是flexible Box的缩写 xff0c 意为 34 弹性布局 34 xff0c 用来为盒状模型提供最大的灵活性 xff0c 任何一个容器都可以指定为flex布局 当我们为父盒子设为flex布局以后 xff0c 子
  • 弹性布局中flex子项属性

    3 flex布局子项常见属性 1 flex子项目占的份数 A flex属性 xff1a 定义子项目分配剩余空间 xff0c 用flex来表示占多少份数 语法 xff1a flex 数值 以百分比样式输出 xff08 默认为0 xff09 x
  • 事件三要素~JS

    1 事件源 xff1a 哪一个标签需要发生动态改变 xff08 制作时需要获取元素改变元素和被改变元素 xff09 xff1b 2 事件类型 xff1a 指对标签执行的一系列静态页面的操作行为 xff1a 如 xff1a 点击 悬浮 触发未
  • 初识dom简单交互效果案例制作~JS

    一 点击不同的button实现页面img的改变 代码如下 xff1a 注意通过函数动态改变的img路径在编写的时候一定要是相对路径 lt body gt lt style gt div height 250px width 333px ba
  • dom简单交互效果案例制作~JS(二)

    1 排他操作 1 总结 xff1a 需要不停的去点击这个按钮 xff0c 每按下一个上一次点击的按钮背景就必须恢复正常 xff0c 用for循环每一次在点击之前所有的背景颜色恢复正常 xff0c 然后在去执行改色操作 lt body gt
  • Tab栏选项卡JS交互效果~JS

    tab栏选项卡 tab栏选项卡 分析 xff1a 分两个部分上面是选项卡下面是点击选项卡后显示出来的一部分 xff1b h5c3制作时将下面部分的样式利用display xff1a none xff1b 全部隐藏起来 JS中对于选项卡制作依
  • 节点操作简单概述~JS

    1 概述 一般 xff0c 节点至少拥有nodeType xff08 节点类型 nodeName 节点名称 xff09 和nodeValue 节点值 xff09 这三个基本属性 元素节点nodeType为1 属性节点nodeType为2 文