表格实现跨行变色和跨列变色

发布于:2022-12-19 ⋅ 阅读:(595) ⋅ 点赞:(0)

创建如图表格:

let tr = document.querySelectorAll("tr")

        //跨行显色

        //获取所有的行

        //遍历所有行,偶数行显色

        for (let i = 0; i < tr.length; i += 2) {

            tr[i].style.backgroundColor = "pink";

        }

        //点击哪一行哪一行显色

        //遍历所有行设置点击事件

        //排他设计

        for (let i = 0; i < tr.length; i++) {//遍历所有行设置点击事件

            tr[i].onclick = function () {//点击哪一行哪一行显色

                for (let j = 0; j < tr.length; j++) {//排他设计

                    tr[j].style.backgroundColor = "white";

                }

                this.style.backgroundColor = "pink";// this指向i

            }

        }

 //排他设置思想:先排除他人(包括自己),再设置自己

        //先获取每个按钮

        //每个按钮设置上点击事件

        //先排除他人

        //最后设置自己

        let but = document.querySelectorAll("button");//先获取每个按钮

        for (let i = 0; i < but.length; i++) {

            but[i].onclick = function () {//每个按钮设置上点击事件

                // console.log(this);

                // console.log(i);

                for (let j = 0; j < but.length; j++) {//先排除他人      

                    but[j].style.backgroundColor = "";

                }

                this.style.backgroundColor = "red";//最后设置自己

            }

        }

 let tr = document.querySelectorAll("tr")//取出所有行

        //跨列显色

        for (let i = 0; i < tr.length; i++) {

            let arrSon = tr[i].children;//在每行分别拿出子元素

            for (let j = 0; j < arrSon.length; j += 2) {//从0开始

                arrSon[j].style.backgroundColor = "pink";//对应子元素的第偶数个显色

            }

        }

        //点击哪列哪列显色

        let td = document.querySelectorAll("td");//取出所有列

        for (let i = 0; i < td.length; i++) {

            td[i].onclick = function () {//给每列设置点击事件

                let index = this.index();//封装:获取自己是父元素的第几个子元素节点//this指向i

                // console.log(index);//获取当前这一单元格是在这行是第几个元素

                for (let j = 0; j < td.length; j++) {//排他

                    td[j].style.backgroundColor = "white"

                }

                for (let k = 0; k < tr.length; k++) {//每行对应的每列

                    tr[k].children[index].style.backgroundColor = "pink"

                    //每行对应的每个子元素

                }

            }

        }

        // 封装一个方法:获取自己是父元素的第几个子元素节点

    // Object.prototype.index = function () {//封装在原型链上

    //   let arrSon = this.parentElement.children;

    //   for (let i = 0; i < arrSon.length; i++) {

    //     if (this == arrSon[i]) {

    //           return i;

    //     }

    //   }

    // }


网站公告

今日签到

点亮在社区的每一天
去签到