获得一个元素的所有兄弟元素节点,是需要包含它自己的对吗。得把它本身拼接上吗

来源:3-13 封装节点关系函数

张小阳_

2022-06-25 16:50:47

<!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>获得一个元素的所有兄弟元素节点</title>
</head>

<body>
    <div id="ele">
        <p>1</p>
        <p>2</p>
        <p id="third">3</p>
        <p>4</p>
        <p>5</p>
        <p>6</p>
    </div>

    <script>
        function getAllElementsSibling(node) {
            // 前面节点集合
            var pervs = [];
            // 后面节点集合
            var nexts = [];
            // 前面元素节点遍历
            var ret = node;
            while (ret.previousSibling != null) {
                if (ret.previousSibling.nodeType == 1) {
                    pervs.unshift(ret.previousSibling);
                }
                ret = ret.previousSibling;
            }
            // 后面元素节点遍历
            ret = node;
            while (ret.nextSibling != null) {
                if (ret.nextSibling.nodeType == 1) {
                    nexts.push(ret.nextSibling);
                }
                ret = ret.nextSibling;
            }
            return pervs.concat(node, nexts);
        };

        console.log(getAllElementsSibling(third));
    </script>
</body>

</html>

https://img.mukewang.com/climg/62b6cc220925cb4316561008.jpg

写回答

1回答

好帮手慕小李

2022-06-25

同学你好,同学理解的是对的。

这里是说要将一个元素的所有兄弟节点都获取到,那么这里使用的是concat方法进行的拼接,拼接时把全部的都要装到数组中。如下图打印一下看看结果

https://img.mukewang.com/climg/62b6ce47094138c310470791.jpg

https://img.mukewang.com/climg/62b6ce5909e6505204850078.jpg

那么这里就是将当前传递的node前后的兄弟元素全部concat到一起。

祝学习愉快!

0

0 学习 · 17877 问题

查看课程