操作元素节点操作:自定义属性-子节点操作-父节点-下拉节点实例-兄弟节点解析-创建节点-简单发布实例-删除节点

操作元素

自定义属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   <div getTime = '20' data-index = "20" data-list-name = "45"></div> 

   <
   <script>
       var getTime = document.querySelector('div');
    //    div.getTime
       console.log(getTime.getAttribute('getTime'));
       //规定自定义属性 data-开头
       getTime.setAttribute("data-time",20);
       //兼容性获取属性值
       console.log(getTime.getAttribute('data-time'));
       console.log(getTime.getAttribute('data-list-name'));

       //dataset 是一个存放了所有data开头的自定义属性   只支持ie11以上
       console.log(getTime.dataset);
       console.log(getTime.dataset.index);
       console.log(getTime.dataset['index']);
       //如果自定义属性有多个-链接得单词,我们获取时采取 驼峰命名法
       console.log(getTime.dataset.listName);
       console.log(getTime.dataset['listName']);
   </script>
</body>
</html>

子节点获取

获取第一个子节点 获取最后一个子节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>子节点</title>
</head>
<body>
    <div>
        我是div
    </div>
    <span>我是span</span>
    <ul>
        <li>我是li</li>
        <li>我是li</li>
        <li>我是li</li>
        <li>我是li</li>
        <li>我是li</li>
        <li>我是li</li>
    </ul>
    <ol>
        <li>我是li</li>
        <li>我是li</li>
        <li>我是li</li>
        <li>我是li</li>

    </ol>
    <div class="demo">
        <div class="box">
            <span class="erweima">x</span>
        </div>
    </div>
    <script>
        var ul = document.querySelector('ul');
        var ol = document.querySelector('ol');
        var li = ul.querySelectorAll('li');
        //1.子节点  childNodes得到的节点包括元素节点 文本节点等
        console.log(ul.childNodes);
        console.log(ul.childNodes[0].nodeType);
        console.log(ul.childNodes[1].nodeType);//nodeType 获得的是节点类型

        //1	Element	代表元素	Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
        // 2	Attr	代表属性	Text, EntityReference
        // 3	Text	代表元素或属性中的文本内容。	None
        // 4	CDATASection	代表文档中的 CDATA 部分(不会由解析器解析的文本)。	None
        // 5	EntityReference	代表实体引用。	Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
        // 6	Entity	代表实体。	Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
        // 7	ProcessingInstruction	代表处理指令。	None
        // 8	Comment	代表注释。	None
        // 9	Document	代表整个文档(DOM 树的根节点)。	Element, ProcessingInstruction, Comment, DocumentType
        // 10	DocumentType	向为文档定义的实体提供接口	None
        // 11	DocumentFragment	代表轻量级的 Document 对象,能够容纳文档的某个部分	Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
        // 12	Notation	代表 DTD 中声明的符号。

        //如果只想获得元素节点 需要处理
        for(var i = 0;i < ul.childNodes.length;i++){
            if(ul.childNodes[i].nodeType == 1){
                //ul.childNodes[i]是元素节点
                console.log(ul.childNodes[i]);
            }
        }

        //有非标准的 parentNode.children 是一个只读属性 返回所有元素得子元素节点。他只返回子元素节点,其余接待内部返回
        //虽然他是非标准,但是得到了各个浏览的支持

        //2.children
        console.log(ul.children);


        //节点层次
        //1.firstChild 返回的是第一个子节点 不管是文本还是元素节点
        console.log(ol.firstChild);
        //2.lastChild 返回的是第一个子节点 不管是文本还是元素节点
        console.log(ol.lastChild);
        
        //下面两个方法只有ie9以上才支持
        //1.firstElementChild 返回第一个元素节点
        console.log(ol.firstElementChild);
        //1.lastElementChild 返回最后一个元素节点
        console.log(ol.lastElementChild);
        // 3.实例开发写法
        console.log(ol.children[0]);//得到第一个
        console.log(ol.children[ol.children.length - 1]);//得到最后一个

    </script>
</body>
</html>

父节点

<p>列表示例:</p>
    <ul>
      <li>Coffee</li>
      <li>Tea</li>
    </ul>

    <p id="demo">点击按钮来获得列表中首个列表项的父节点节点名。</p>

    <button onclick="myFunction()">试一下</button>

    <script>
      function myFunction() {
        var x = document.getElementById('demo')
        var y = document.getElementsByTagName('LI')[0]
        x.innerHTML = y.parentNode.nodeName
      }
    </script>

下拉节点

实例

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>下拉菜单</title>
    <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;
        }
        
        .nav ul li a:hover {
            background-color: #FFF5DA;
        }  /**/
    </style>
</head>

<body>
    <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>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
    </ul>
    <script>
        // // 1. 获取元素
        // var nav = document.querySelector('.nav');
        // var lis = nav.children; // 得到4个小li
        // // 2.循环注册事件
        // 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';
        //     }
        // }



        var nav = document.querySelector('.nav');
        var lis = nav.children; // 得到4个小li
            console.log(lis[1].children[1]);
        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>

兄弟节点解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>我是div</div>
    <span>我是span</span>
    <script>
        var div = document.querySelector('div');
        //nextSibling 得到的是下一个兄弟节点 包含文本节点元素节点
        console.log(div.nextSibling);//所以这里得到的是文本节点 换行
        //previousElementSibling 得到的是上一个兄弟节点 包含文本节点元素节点
        console.log(div.previousSibling);//所以这里得到的是文本节点 换行
        

        //虽然好用但是具有兼用型问题支支持ie9以上
        //nextElementSibling 得到的是元素的下一个元素节点
        console.log(div.nextElementSibling);
         //previousElementSibling 得到的是元素的上一个一个元素节点
        console.log(div.previousElementSibling); 

        // 可以封装一个兼用型函数
        function hetNextElementSibling(element){//接收一个元素
            var el = element;//赋值给el
            while(el = el.nextSibling){//获取el得所有下一个节点
                if(el.nodeType === 1){//判断是否为元素节点  nodeType 如果为1 iu是元素节点
                    return el;
                }
            }
            return null;
        }

    </script>
</body>
</html>
	<ul>
        <li>123</li>
    </ul>
    <script>
        //1.创建节点  元素节点
       var li = document.createComment('li');
       //2.添加节点  node.appendChild(child)  node父级  child子级 后面追加元素  类似于数组中的push
        var ul = document.querySelector('ul');
        ul.appendChild(li);

        //3.添加节点 node.insertBefore (child,指定元素)
        var lili = document.createComment('li');
        ul.insertBefore(lili,ul.childNodes[0]);
        //4.我们想要给页面添加一个新的元素  1.创建元素 2.天界元素

添加节点简单发布实例

      <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>简单留言</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }

      body {
        padding: 100px;
      }

      textarea {
        width: 200px;
        height: 100px;
        border: 1px solid pink;
        outline: none;
        resize: none;
        color: #888;
      }

      ul {
        margin-top: 50px;
      }

      li {
        width: 300px;
        padding: 5px;
        background-color: rgb(245, 209, 243);
        color: red;
        font-size: 14px;
        margin: 15px 0;
      }
      li a {
        float: right;
      }
      .first {
        color: #000;
      }
    </style>
  </head>

  <body>
    <textarea></textarea>
    <button>发布</button>
    <ul></ul>
    <script>
      // 1. 获取元素
      var btn = document.querySelector('button')
      var text = document.querySelector('textarea')
      var ul = document.querySelector('ul')
      text.value = '请留下您精彩的评论'
      text.innerText = '请留下您精彩的评论'
      text.onfocus = function () {
        console.log('获取了焦点')
        if (this.value == '请留下您精彩的评论') {
          this.value = ''
        }
        this.className = 'first'
      }
      text.onblur = function () {
        var ls = this.value
        if (this.value.length == 0) {
          this.className = ''
          text.value = '请留下您精彩的评论'
        }
      }
      btn.onclick = function () {
        // console.log(text.value)
        // if (text.value == '请留下您精彩的评论') {
        //   alert('请输入内容!')
        // }
        if (text.value == '请留下您精彩的评论') {
          alert('您没有输入内容')
          return false
        } else {
          // console.log(text.value);
          // (1) 创建元素
          var li = document.createElement('li')
          // 先有li 才能赋值
          li.innerHTML = text.value + "<a href = 'javascript:;'>删除</a>" //href = 'javascript:;'禁止a标签跳转
          // (2) 添加元素
          // ul.appendChild(li);
          ul.insertBefore(li, ul.children[0])
          //删除元素 删除的是当前得li  他的父元素
          var as = document.querySelectorAll('a')
          for (var i = 0; i < as.length; i++) {
            as[i].onclick = function () {
              //node.removeChild(child) 删除得视li 当前a所在的li this.parentNode
              ul.removeChild(this.parentNode)
            }
          }
        }
      }
    </script>
  </body>
</html>


删除节点

<body>
    <button>删除</button>
    <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
    </ul>
    <script>
      //删除节点
      //获取元素
      var ul = document.querySelector('ul')
      var btn = document.querySelector('button')
      //2.删除元素 node.removeChild(child)

      //点击按钮删除li
      btn.onclick = function () {
        if (ul.children.length == 0) {
          btn.disabled = true
        } else {
          ul.removeChild(ul.children[0])
        }
      }
    </script>
  </body>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值