JavaScript-筑基(十一)节点操作及发布留言案例

兄弟节点(一般不使用)

node.nextSibling 返回下一个兄弟节点,同样,包含所有类型的节点

node.previousSibling 返回上一个兄弟节点,包含所有类型的节点

node.nextElementSibling 返回下一个兄弟元素节点

node.previousElementSibling 返回上一个兄弟元素节点

<div>aodjoawdoa</div>
   <span>dadcascaca</span>
    <script >
      var div = document.querySelector('div');
      console.log(div.nextElementSibling);
    </script>

先 创建节点

document.createElement('tagName')

document.createElement()方法创建由tagName指定的HTML元素。因为这些元素原先不在,是根据我们的需求动态生成的,所以我们也称动态创建元素节点。

再 添加节点

node.appendChild(child)

  • node.appendChild()方法将一个节点添加到指定父节点的子节点列表末尾。类似于css里面的after伪元素。
  • node.insertBefore(child, 指定元素) 将一个节点添加到父节点的指定子节点前面。类似于css里面的before伪元素。
<ul></ul>
    <script >
      var li = document.createElement('li');
      var ul = document.querySelector('ul');
      ul.appendChild(li);
    </script>
 <ul>
       <li>123</li>
   </ul>
    <script >
      var ul = document.querySelector('ul');
      var lili = document.createElement('li');
      ul.insertBefore(lili, ul.children[0]);
    </script>

简单版发布留言案例

核心思路:点击按钮后,就动态创建一个li,添加到ul里面。创建 li 的同时,把文本域里面的值通过li.innerHTML赋值给li。如果想要新的留言在后面显示就用appendChild,如果想要显得留言在前面显示就用insertBefore。

  <textarea name="" id=""></textarea>
    <button>发布</button>
    <ul>

    </ul>
    <script >
     //1.获取元素
     var btn = document.querySelector('button');
     var ul = document.querySelector('ul');
     var text = document.querySelector('textarea');
     btn.onclick = function() {
         //1.创建元素2.添加元素
         if(text.value == ''){
             alert('未输入内容');
             return false;
         } else {
             var li = document.createElement('li');
             //创建后赋值
             li.innerHTML = text.value;
             ul.insertBefore(li,ul.children[0]);
         }
     }
    </script>

 

删除节点

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

以上面案例进行留言删除。当把文本域里面的内容赋值给 li 时,多添加一个删除链接;把所有链接获取过来,当点击当前的链接的时候,删除当前链接所在的li;阻止链接跳转需要给herf添加javascript:;

 li.innerHTML = text.value + "<a href='javascript:;'>删除</a>";
//删除元素 删除的是当前链接的li,即a的父亲
                var as = document.querySelectorAll('a');
                for (var i = 0; i < as.length; i++) {
                    as[i].onclick = function() {
                        //要删除的是li,即a的父亲this.parentNode
                        ul.removeChild(this.parentNode);
                    }

复制节点

node.cloneNode() 方法返回调用该方法的节点的一个副本。也称为克隆节点

 <ul>
        <li>被删除</li>
        <li>撒旦二</li>
        <li>大苏打</li>
        <!-- <li>被删除</li> -->
    </ul>
    <script >
        var ul = document.querySelector('ul');
        //复制后仍然要添加
        var lili =  ul.children[0].cloneNode(true);//括号里面为空或者false 为浅拷贝 只复制标签不复制内容
        ul.appendChild(lili);
    </script>

祝你学习快乐!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

superfortunate

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

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

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

打赏作者

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

抵扣说明:

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

余额充值