更改表格行tr的背景颜色

  • Post author:
  • Post category:其他



一.业务代码说明:


制作一张商品信息表格,要求当鼠标移动到表格某一行的时候此行的背景颜色集会发生变化,当鼠标移开其背景颜色就会恢复为白色。


具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>change table row backGroundColor</title>
    <style>
        tr{text-align: center}
        caption{margin: 25px}
        .tr1{background-color: bisque}
        .tr2{background-color: white}

    </style>
    <script>
        let changeTrBGColor = function () {
            let trs = document.getElementsByTagName("tr");
            for(let i=1;i<trs.length;i++){
                trs[i].onmouseover = function(){
                    trs[i].className = "tr1";
                }
                trs[i].onmouseout = function(){
                    trs[i].className = "tr2";
                }
            }
        }
        window.onload = function () {
            changeTrBGColor();
        }
    </script>
</head>
<body>
    <table id="table1" border="2px" align="center" cellspacing="0px"
           width="40%" cellpadding="10px">
        <caption>商品信息表</caption>
        <tr>
            <th>商品编号</th>
            <th>商品名称</th>
            <th>商品价格</th>
        </tr>
        <tr>
            <td>1001</td>
            <td>洗衣机</td>
            <td>2800</td>
        </tr>
        <tr>
            <td>1002</td>
            <td>空调机</td>
            <td>3500</td>
        </tr>
        <tr>
            <td>1003</td>
            <td>冰箱</td>
            <td>3000</td>
        </tr>
    </table>
</body>
</html>


代码运行结果如下:


在这里插入图片描述


关键部分代码如下:

let trs = document.getElementsByTagName("tr");
            for(let i=1;i<trs.length;i++){
                trs[i].onmouseover = function(){
                    trs[i].className = "tr1";
                }
                trs[i].onmouseout = function(){
                    trs[i].className = "tr2";
                }
            }

直接为遍历到的每一行tr赋值一个class属性值。


关键部分代码第二种实现:

let trs = document.getElementsByTagName("tr");
            for(let i=1;i<trs.length;i++){
                trs[i].onmouseover = function(){
                    trs[i].setAttribute("class","tr1");
                }
                trs[i].onmouseout = function(){
                    trs[i].setAttribute("class","tr2");
                }
            }

利用setAttribute()方法为遍历到的tr赋值一个class属性值。



关键部分代码第三种实现:

let trs = document.getElementsByTagName("tr");
            for(let i=1;i<trs.length;i++){
                trs[i].onmouseover = function(){
                    trs[i].style.backgroundColor = "blue";
                }
                trs[i].onmouseout = function(){
                    trs[i].style.backgroundColor = "white";
                }
            }

去掉前面<style>标签中的

.tr1{background-color: bisque}
.tr2{background-color: white}

这两个class属性。

直接为鼠标悬停到的tr设置背景颜色值。


运行代码结果:


在这里插入图片描述



以上代码只适用于,“静态页面表格”情况。

下面是动态生成表格情况下改变表格tr的策略。




一.业务需求:


1.将商品信息添加到输入到相对应的信息输入框中,通过点击“按钮”将商品信息添加到“商品信息表”中生成表格的一部分。

2.当鼠标悬停在某一表格信息行(即tr)上,当前表格行的背景颜色就会变成蓝色。


二.业务代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>change table row backGroundColor</title>
    <style>
        tr{text-align: center}
        caption{margin: 25px}
        input{background-color: #FFF68F;text-align: center;
              outline-style: dashed;
              border-color: blue;border-style: solid;border-radius: 4px;
              padding: 6px 0px;width: 150px;
              font-size: 15px;font-family: 微软雅黑;}
        #span1{text-align:center;display: block;}
        /*border-radius 属性允许您向元素添加圆角。*/
        /*在输入框中可以使用padding标签属性来调整输入框的高度*/
        a{border-color: red;border-style: solid;}
    </style>
    <script>
        /**构建一个constructTable()方法:动态创建表格**/
        function constructTable(){
            //创建tr
            let trObj = document.createElement("tr");
            trObj.onmouseover = function (){
                trObj.style.backgroundColor = "blue";
            }
            trObj.onmouseout = function (){
                trObj.style.backgroundColor = "white";
            }
            //更改tr行的背景颜色
            let inputObjs = document.getElementsByTagName("input");
            for(let i=0;i<inputObjs.length;i++){
                //获取input中用户输入的value值
                let inputValue = inputObjs[i].value;
                //创建文本节点
                let textObj = document.createTextNode(inputValue);
                //创建td标签
                let tdObj = document.createElement("td");
                //将textObj文本节点添加到tdObj
                tdObj.appendChild(textObj);
                //将tdObj添加到trObj
                trObj.appendChild(tdObj);
            }
            //获取table
            let tableObj = document.getElementById("table1");
            //将trObj添加到tableObj
            tableObj.appendChild(trObj);
            /***将输入框中数据添加到表格中后,清空input标签中数据***/
            for (let i=0;i<inputObjs.length;i++){
                inputObjs[i].value="";
            }
        }
    </script>
</head>
<body>
    <span id="span1">
    商品编号:<input type="text" placeholder="请输入商品编号"
                oninput="value=value.replace(/[^\d]/g,'')";><br/><br/>
    商品名称:<input type="text" placeholder="请输入商品名称"><br/><br/>
    商品价格:<input type="text" placeholder="请输入商品价格"><br/><br/>
    <a href="javascript:void(0)" onclick="constructTable()">提交数据到表格</a>
    </span>
    <table id="table1" border="2px" align="center" cellspacing="0px"
           width="40%" cellpadding="10px">
        <caption>商品信息表</caption>
        <tr>
            <th>商品编号</th>
            <th>商品名称</th>
            <th>商品价格</th>
        </tr>
    </table>
</body>
</html>


三.代码运行结果如下:

在这里插入图片描述


四.代码分析:



1.input标签中需注意的代码:


1)在输入框中可以使用padding标签属性来调整输入框的高度。

在这里插入图片描述


2)使“商品编号”输入框中只能输入数字

商品编号:<input type="text" placeholder="请输入商品编号"oninput="value=value.replace(/[^\d]/g,'')";>

3)border-radius 属性允许您向元素添加圆角。


2.更改动态添加的tr的背景颜色代码:

 let trObj = document.createElement("tr");
            trObj.onmouseover = function (){
                trObj.style.backgroundColor = "blue";
            }
            trObj.onmouseout = function (){
                trObj.style.backgroundColor = "white";
            }

当鼠标悬停在tr就改变其背景颜色,移开后恢复原来背景色。


3.href=“javascript:void(0)”

<a href="javascript:void(0)" onclick="constructTable()">

不能用href=”#” ,因为此时点击<a>按钮之后会变色。


4.使input输入框在网页居中

......
#span1{text-align:center;display: block;}
......
<span id="span1">
    商品编号:<input type="text" placeholder="请输入商品编号"
                oninput="value=value.replace(/[^\d]/g,'')";><br/><br/>
    商品名称:<input type="text" placeholder="请输入商品名称"><br/><br/>
    商品价格:<input type="text" placeholder="请输入商品价格"><br/><br/>
    <a href="javascript:void(0)" onclick="constructTable()">提交数据到表格</a>
</span>

暂时无法直接使input输入框在网居中,只能“迂回作战”——将input输入框放在<span></span>标签中,通过设置span标签属性使input输入框居中。



版权声明:本文为weixin_45190226原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。