javascript - 在选择时更改 <td>,并在选择不同的 <td> 后恢复更改?

标签 javascript html html-table

我正在构建一个表格,我希望更改所选单元格的背景颜色。然后,当我选择不同的单元格(并对这个新单元格应用相同的更改)时,我希望更改在第一个(不再选择)单元格中恢复。对此最好的方法是什么?这是我的代码:

var table = '';

for (var r = 0; r < rows; r++) {
    table += '<tr>';

    for (var c = 0; c < cols; c++) {
        if (c == 0) {
            if (r == 0) {
                var cellID = r.toString();
                cellID += letterArray[c - 1];
                table += '<td style="min-width:50px; height:25px;">' + '</td>';
            }
            else {
                var cellID = r.toString();
                cellID += letterArray[c - 1];
                table += '<td style="min-width:50px; height:25px">' + r + '</td>';
            }
        }
        else if (r == 0 && c > 0) {
            var cellID = r.toString();
            cellID += letterArray[c - 1];
            table += '<td style="min-width:50px; height:25px">' + letterArray[c - 1] + '</td>';
        }
        else {
            var cellID = r.toString();
            cellID += letterArray[c - 1];
            table += '<td id="' + cellID + '" style="min-width:50px; height:25px;" onclick="selectCell(this)">' + '</td>';
        }
    }
    table += '</tr>';
}

将表格写入文档:

document.write('<table id="table" border=1>' + table + '</table>');

选择单元格函数:

function selectCell(x) {
    alert("Row = " + x.parentNode.rowIndex + " Col = " + String.fromCharCode((x.cellIndex - 1) + 65));
    x.style.backgroundColor = 'purple';
}

这就是我遇到问题的地方。当我单击第一个单元格时,我的警报会显示我选择的单元格的信息,然后更改背景颜色。然后,当我选择不同的单元格时,它会用新的单元格行和列信息提醒我,并更改颜色。

恢复先前选定单元格颜色变化的最佳方法是什么?

感谢您的时间和精力!

最佳答案

您应该创建一个应用背景颜色的 CSS 类,并在您的函数中添加/删除它。您的函数可以检查已经具有该类的元素,如下所示:

CSS:

.selected {
  background-color: purple;
}

JS:

function selectCell(x) {
  var currentSelection = document.querySelector('.selected');

  if (currentSelection) {
    currentSelection.classList.remove('selected');
  }

  x.classList.add('selected');
}

关于javascript - 在选择时更改 <td>,并在选择不同的 <td> 后恢复更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931026/

相关文章:

html - 将边框半径和填充添加到单个表格行

javascript - 如何确定一个点当前位于椭圆路径的哪一半?

java - 有没有办法在 JavaScript 代码中找到某个 Java 类的 "expect"实例?

html - 响应式导航错误

html - 如何将一个图像设置为另一个背景图像的中心底部

php - 表格在筛选结果时打印多个列标题

javascript - 如何正确下采样 HTML Canvas 以获得好看的图像?

java - 未显示 ActionError

jquery - 无法将文本颜色黑色转换为白色(从一种颜色淡入另一种颜色)-JQuery UI

html - 防止表格尺寸失真