JavaScript实现九宫格点击随机变色功能

作者:像素猫

时间:2026-10-24

浏览:652

本文介绍如何使用JavaScript实现九宫格布局中点击任意格子随机改变背景色的效果。通过HTML表格或Div构建网格,利用onclick事件绑定处理函数,结合Math.random生成RGB随机值并修改DOM样式。文中包含表格版与Div版的完整代码示例,并探讨了纯CSS实现点击事件的可行性疑点。

文章目录

九宫格点击变色功能实现

本文分享了一段使用JavaScript实现九宫格点击后格子颜色变化的具体代码,供读者参考。

目标是完成九宫格的布局,并实现点击任意一个格子后,该格子的背景颜色发生改变的功能。

九宫格点击变色功能实现

HTML表格框架与样式设置

首先,利用HTML表格元素构建九宫格的基本框架结构。


<table>
    <tr >
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr >
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr >
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

接着,为九宫格设置相应的CSS样式,包括尺寸、边框和间距等属性。


<style>
        table{
            height: 600px;
            width: 600px;
            border-spacing: 0;
        }
        td{
            margin: 0;
            border:1px solid red;
        }

</style>

添加点击事件处理逻辑

为了使每个方块具备点击交互效果,需为每个表格单元格(td)添加onclick事件属性,并在处理函数中通过this关键字引用当前操作的元素对象。


<table>
    <tr >
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
    </tr>
    <tr >
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
    </tr>
    <tr >
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
    </tr>
</table>

CSS点击事件尝试与疑点

在此之前,曾尝试通过CSS直接设置点击事件,例如类似如下写法:


<style>
        td{
            onclick:change(this);
        }

</style>

然而,这种方法目前看来不可行,具体原因尚存疑点。

JavaScript核心代码实现

接下来是最核心的JavaScript代码部分。程序使用Math.random()*256生成0到256之间的随机数,再通过parseInt()将其转换为整数,最后通过.style.backgroundColor属性设置背景颜色。


function change(a) {
         var randomNum=parseInt(Math.random()*256)+","+parseInt(Math.random()*256)+","+parseInt(Math.random()*256);
         a.style.backgroundColor="rgb("+randomNum+")";
     }

完整代码示例

以下是完整的代码实现。

第一种方案基于HTML表格(table)实现:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        table{
            height: 600px;
            width: 600px;
            border-spacing: 0;
        }
        td{
            margin: 0;
            border:1px solid red;
        }

    </style>
</head>
<body>
 <!--使用前端知识,实现九宫格布局,点击任意格子随机改变格子背景颜色-->
<table>
    <tr >
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
    </tr>
    <tr >
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
    </tr>
    <tr >
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
        <td onclick="change(this)"></td>
    </tr>
</table>
 <script>
     function change(emle) {
         console.log("1");
         var randomNum=parseInt(Math.random()*256)+","+parseInt(Math.random()*256)+","+parseInt(Math.random()*256);
         console.log(randomNum);
         emle.style.backgroundColor="rgb("+randomNum+")";

     }
 </script>
</body>
</html>

第二种方案基于Div元素实现:


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        #box{
            margin:0 auto;
            width: 306px;
            height: 306px;
            border: 1px solid red;

        }
        #box div{
            width: 100px;
            height: 100px;
            border: 1px solid #ccc;
            float: left;
        }

    </style>
</head>
<body>
<div id="box">
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
    <div onclick="changeColor(this)"></div>
</div>
<script>
    function changeColor(elem){
        var red = parseInt(Math.random()*256);
        var blue = parseInt(Math.random()*256);
        var green = parseInt(Math.random()*256);
        elem.style.backgroundColor ="rgb("+red+","+blue+","+green+")";
    }
</script>
</body>
</html>

以上就是本文的全部内容,希望对读者学习有所帮助,也欢迎大家继续支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章