JavaScript-筑基(十)节点操作初识及下拉栏案例

网页中所有的内容都是节点(标签、属性、文本、注释等),在DOM中,节点使用node来表示。

所有节点均可通过JavaScript进行访问和修改,所有HTML元素(节点)均可被修改,也可被创建或者删除。

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

  1. 元素节点nodeType 为 1 (实际开发主要获取)
  2. 属性节点nodeType 为 2
  3. 文本节点nodeType 为 3(文本节点包含文字、空格、换行等)

利用节点层级关系获取元素

  1. 利用父子节点关系获取元素
  2. 逻辑性较强,兼容性稍差

父节点parentNode,得到离元素最近的父级节点;如果无父节点,返回null;

 <div class="box">
        <span class="qaqqa"></span>
    </div>
  
    <script >
        var qaqqa = document.querySelector('.qaqqa');
        console.log(qaqqa.parentNode);
    </script>

子节点parentNode.childNodes 返回包含指定节点的子节点的集合,该集合为即时更新的集合

<ul>
        <li>123</li>
        <li>93</li>
        <li>293</li>
        <li>623</li>
    </ul>
    <script >
        var ul = document.querySelector('ul');
        console.log(ul.childNodes);
    </script>

返回所有包含元素节点 和文本节点等

常用 parentNode.children,获取所有子元素节点

console.log(ul.children);
  1. 获取第一个子元素节点 parentNode.firstElementChild
  2. 获取第一个元素节点实际开发写法 parentNode.children[0]
  3. 获取最后一元素节点 parentNode.lastElementChild
  4. 获取最后一元素节点实际开发写法 parentNode.children[ul.children.length -1]

下拉栏案例(大部分代码)

.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;
        }
        
        .nav ul li a:hover {
            background-color: #c94d1c;
        }
  <ul class="nav">
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
 var nav = document.querySelector('.nav');
       var lis = nav.children; //得到四个小li
       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';
           }
       }

祝你学习快乐!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superfortunate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值