js之节点操作-查找创建添加删除克隆

查找父节点

使用parentNode查找父节点
<body>
    <div class="father">
        <div class="son">儿子</div>
    </div>

    <script>
        var son=document.querySelector(".son");
        //打印父节点
        console.log(son.parentNode);
        //设置父节点关闭
        son.parentNode.style.display="none"
    </script>
</body>

查找子节点

第一种 children(重点) ,仅获得所有元素节点,返回的还是一个伪数组
<body>
    <button>点击</button>
    <ul>
        <li>我是孩子</li>
        <li>我是孩子</li>
        <li>我是孩子</li>
        <li>我是孩子</li>
        <li>我是孩子</li>
        <li>我是孩子</li>
    </ul>

    <script>
        var btn = document.querySelector("button")
        var ul = document.querySelector("ul")
        btn.addEventListener("click", function () {
            // console.log(ul.children);打印ul子节点li
            //把所有的子元素变成红色
            for (var i = 0; i < ul.children.length; i++) {
                ul.children[i].style.color = "red"
            }
            ul.children[0].style.color = "green"

            console.log(ul.childNodes);//打印   13个元素,六个li和七个换行文本
        })
    </script>
</body>
第二种childNodes, 获得所有子节点、包括文本节点(空格、换行)、注释节点等
console.log(ul.childNodes);//打印第一种方式点击事件里   打印出13个元素,六个li和七个换行文本

推荐第一种写法,因为第二种把换行文本等不必要的都查找出来了,第一种只查找属性节点

查找兄弟节点

查找下一个兄弟nextElementSibling
查找上一个兄弟previousElementSibling
<body>
    <button>点击</button>
    <ul>
        <li>第一个</li>
        <li class="test">第二个</li>
        <li>第三个</li>
        <li>第四个</li>
    </ul>

    <script>
        var btn = document.querySelector("button")
        var test = document.querySelector(".test")
        btn.addEventListener("click", function () {
            //第二个变红色
            test.style.color="red"
            //他的下一个兄弟兄弟变绿色
            test.nextElementSibling.style.color = "green"
            //他的上一个兄弟兄弟变绿色
            test.previousElementSibling.style.color = "yellow"

        })

创建节点createElement

 var div=document.createElement("div")

创建完 向后追加节点appendChild

<body>
    <ul>
    	<li>我是萧寂</li>
    	<li>我是小明</li>
    </ul>
    <script>
    	 //获取父节点
        var ul=document.querySelector("ul")
          //创建新的节点
        var li=document.createElement("li")
        //新节点添加内容
         li.innerHTML="我是新创建的小li"
//---------------------------------------------------------------
       // //将新节点追加到父节点中(只能往后追加)
       // ul.appendChild(li)       
//--------------------------------------------------------------------------
		//向前追加,把新创建的放到小明前
        //ul.children[1]获取小明元素
        ul.insertBefore(li,ul.children[1])
    </script>  
</body>


父元素.appendChild(子元素)

克隆节点cloneNode

cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值
若为true,则代表克隆时会包含后代节点一起克隆
若为false,则代表克隆时不包含后代节点
默认为false

元素.cloneNode(布尔值)

<body>
    <ul>
        <li>我是内容</li>
    </ul>
    <script>
        var ul = document.querySelector("ul")
        //括号为空,则默认为false不克隆后代节点
        // var new1 = ul.cloneNode();
        // var new1 = ul.cloneNode(false);
        //括号为true,克隆后代节点
        var new1 = ul.cloneNode(true);
        //在body追加克隆元素
        document.body.appendChild(new1)
    </script>
</body>

删除节点removechild

要删除元素必须通过父元素删除
如不存在父子关系则删除不成功
删除节点和隐藏节点(display:none)有区别的:隐藏节点还是存在的,但是删除,则从html中删除节点

父元素.removechild(要删除的元素)

<body>
    <button>点击</button>
    <ul>
        <li>我是内容111111</li>
    </ul>
    <script>
        //需求,点击按钮删除小li
        var btn = document.querySelector("button")
        var ul = document.querySelector("ul")
        btn.addEventListener("click", function () {
            //删除的语法父元素.removechiLd(子元素)
            ul.removeChild(ul.children[0])
        })
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

萧寂173

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

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

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

打赏作者

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

抵扣说明:

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

余额充值