laolunsibojue 2023-09-02 18:51 采纳率: 38.5%
浏览 31
已结题

如何使用JS实现棋盘格子颜色互换

用JS实现一个效果
点击 “变色” 按钮后,棋盘内相邻的格子颜色互换,红色变成黑色,黑色变成红色

img


但是我设置的代码点击 '变色' 按钮后,却变成了这种隔行变色的效果

img

img

img


我是用createElement属性创造了400个div格子元素放到oBox框子元素中的
本人初学JS,实在想不明白。请问您们知道该怎么做这种效果吗?

  • 写回答

8条回答 默认 最新

  • 语言-逆行者 2023-09-02 19:18
    关注

    修改后:

    • 你的代码中,点击按钮后会根据index的值来判断当前要变成哪种颜色的棋盘。如果index是偶数,就将偶数索引位置的格子变成红色,奇数索引位置的格子变成黑色;如果index是奇数,就将偶数索引位置的格子变成黑色,奇数索引位置的格子变成红色。

    • 修改后的代码段中,点击按钮后会遍历所有的格子,如果格子的背景颜色是红色,则将其变成黑色,反之如果是黑色,则将其变成红色。该代码段没有使用index来控制具体变换的颜色,而是根据格子原本的颜色来进行切换。

    img

    img

    <!DOCTYPE html>
    <html>
    <head>
      <title>棋盘变色</title>
      <style type="text/css">
        body {
          margin: 0;
          padding: 0;
        }
      
        #box {
          width: 400px;
          height: 400px;
          position: absolute;
          left: 50%;
          top: 50%;
          margin-left: -200px;
          margin-top: -200px;
          border: 1px solid black;
        }
      
        #box > div {
          width: 20px;
          height: 20px;
          float: left;
        }
      
        #Btn {
          width: 80px;
          height: 30px;
          font-size: 15px;
          letter-spacing: 1px;
          position: absolute;
          top: 40%;
          left: 30%;
        }
      </style>
    </head>
    <body>
      <div id="box"></div>
      <input type="button" name="colorBtn" id="Btn" value="变色">
      
      <script type="text/javascript">
        var oBox = document.getElementById('box');
        var index = 0;
        
        for (var i = 0; i < 400; i++) {
          var oDiv = document.createElement('div');
          oBox.appendChild(oDiv);
          
          if (Math.floor(i / 20) % 2 == 0) {
            if (i % 2 == 0) {
              oDiv.style.background = 'red';
            } else {
              oDiv.style.background = 'black';
            }
          } else {
            if (i % 2 == 0) {
              oDiv.style.background = 'black';
            } else {
              oDiv.style.background = 'red';
            }
          }
        }
        
        var colorBtn = document.getElementById("Btn");
        colorBtn.onclick = function() {
          index++;
          var allDiv = oBox.getElementsByTagName('div');
          
          for (var a = 0; a < allDiv.length; a++) {
            if (allDiv[a].style.background == 'red') {
              allDiv[a].style.background = 'black';
            } else {
              allDiv[a].style.background = 'red';
            }
          }
        };
      </script>
    </body>
    </html>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 修改了问题 9月2日
  • 创建了问题 9月2日