javascript - 按钮触发周围按钮无法正常工作

标签 javascript html

我有这个 JavaScript 代码:

function toggle(i,j) {
  b=document.getElementById("but_" + i + j)
  t = b.innerHTML
  if (t=="X") {b.innerHTML = "O";
               b.setAttribute( "style", "color:red; background-color:yellow" )
              }
  if (t=="O") {b.innerHTML = "X";
               b.setAttribute( "style", "color:white; background-color:black" )
              }
}

function press(i, j) {
toggle(i, j);
toggle(i-1, j);
toggle(i+1, j);
toggle(i, j-1);
toggle(i, j+1);
}



function generateGrid() {
    var d = document.getElementById("button-grid");
    var table = document.createElement("table");
    d.appendChild(table);
    for (var i = 0; i < 5; i++) {
            var row = document.createElement("tr");
            for (var j = 0; j < 5; j++) {
                    var cell = document.createElement("td");
                    cell.innerHTML = "<button type=button id=but_" + i + j +
                                     " onclick=\"press(" +i + ',' +j + ")\"" + 
                                     " style=\"color:red; background-color:yellow\"" +
                                     ">O</button>" ;
                    row.appendChild(cell);
            }
            table.appendChild(row);
    }
    toggle(2,2) // Set middle button to off state (otherwise it seems to be impossible).
}

window.onload = function() {
    generateGrid();
};

我希望当我单击网格上的按钮时,它不仅会切换该按钮,还会切换顶部、底部、左侧和右侧的按钮。

此代码适用于所有按钮,除非您切换边缘的按钮。我需要它,例如,当您单击右侧边缘上的按钮时,它会与顶部、底部和左侧按钮一起切换。

如果您需要更多信息,请告诉我,谢谢!

最佳答案

您必须添加一个 if 语句来检查按钮是否位于边缘 - 例如,您可以使用:

if (i > 0) {
    toggle(i-1, j);
}
if (i < 4) {
    toggle(i+1, j);
}
if (j > 0) {
    toggle(i, j-1);
}
if (j < 4) {
    toggle(i, j+1);
}

这样,只有当按钮 i-1(左侧的按钮)不在左列上或者 i = 0 时,才会切换该按钮。

关于javascript - 按钮触发周围按钮无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697761/

相关文章:

javascript - 在创建当前窗口的窗口上调用 postMessage。

javascript - 我有 3 个 Controller 从数据库获取数据列表并将其显示在下拉列表中,但是当选择它时,它不会获取列表的选定值

javascript - 如何使用 jquery 预加载幻灯片的多个但不是所有图像

html - 如何在我的 html 页面底部创建空间

javascript - 如何检索自定义 DOM 属性的值?

html - 如何在过滤器上方带有文本的图像上放置透视过滤器

javascript - 动画 onclick 事件的显示 :none

javascript - 将变量从 javascript 页面传递到 php 页面时遇到问题

javascript - 如何使输入成为固定文本

jquery - 在不使用 <form> 的情况下通过页面刷新发布值?