javascript - 从表中选择一个单元格并为其指定唯一的类

标签 javascript html css excel es6-class

我有 49 个单元格(7x7 行/列),我试图从 49 个单元格中创建一个唯一的单元格,正如您在运行代码片段时看到的那样,49 个单元格具有 50 之间的随机数到 500,其中一个单元格呈红色。

我正在努力解决的问题,我希望一个单元格具有符号(标记板),例如 S 或 D,而不是数字,我如何才能实现这一目标?

var isCol = 0;
var board = [];
for (r = 0; r < 7; r++) {
  var line = [];
  for (c = 0; c < 7; c++) {
    line.push(RandomGenerator(50, 500));
  }
  board.push(line);
}

function prs(c, r) {
  showTable(c, r);
  isCol = (isCol + 1) % 2;
}

function toColor(col, row, chosen_col, chosen_row) {
  var ret = false;
  switch (isCol) {
    case 0:
      if (row == chosen_row) {
        ret = true;
      }
      break;
    case 1:
      if (col == chosen_col) {
        ret = true;
      }
      break;
  }

  return ret;
}

function showTable(chosen_col, chosen_row) {
  var str = "";
  str += "<table border=1>";
  for (row = 0; row < 7; row++) {
    str += "<tr>";
    for (col = 0; col < 7; col++) {
      str += "<td onclick='prs(" + col + "," + row + ")'";
      if (toColor(col, row, chosen_col, chosen_row)) {
        str += " class='grn' ";
      }
      str += ">";
      str += board[row][col];
      str += "</td>";
    }
    str += "</tr>";
  }
  str += "</table>";

  document.getElementById("ff").innerHTML = str;
}

function RandomGenerator(min, max) {
  return Math.floor(Math.random() * (max - min) + min);
}

showTable(-1);

var getUnique = function(){
  var tdElements = document.querySelectorAll('#ff td');
  tdElements[
    RandomGenerator(0, tdElements.length)
  ].classList.add('uniqueCell')
};
getUnique();
td{
border:2px solid black;
width:10px;
height:10px;
}
td:hover{background-color:lightgreen;}
.grn{
background-color:green;
color:white;
}

.uniqueCell {
  background-color: tomato;
}
<div id="ff"></div>

最佳答案

这看起来很简单,因为元素中有一个类(uniqueCell)。您只需使用类 (uniqueCell) 定位单元格并设置 innerTexttextContent 属性即可:

document.querySelector('.uniqueCell').textContent = 'S';

var isCol = 0;
var board = [];
for (r = 0; r < 7; r++) {
  var line = [];
  for (c = 0; c < 7; c++) {
    line.push(RandomGenerator(50, 500));
  }
  board.push(line);
}

function prs(curr, c, r) {
  showTable(curr, c, r);
  isCol = (isCol + 1) % 2;
}

function toColor(col, row, chosen_col, chosen_row) {
  var ret = false;
  switch (isCol) {
    case 0:
      if (row == chosen_row) {
        ret = true;
      }
      break;
    case 1:
      if (col == chosen_col) {
        ret = true;
      }
      break;
  }
  return ret;
}

function showTable(c, chosen_col, chosen_row) {
  var str = "";
  str += "<table border=1>";
  for (row = 0; row < 7; row++) {
    str += "<tr>";
    for (let col = 0; col < 7; col++) {
      str += "<td onclick='prs(this, " + col + "," + row + ")'";
      if (toColor(col, row, chosen_col, chosen_row)) {
        if(c.textContent == board[row][col]){
          str += " class=uniqueCell";
        }
        else str += " class='grn' ";
      }
      str += ">";
      if(c.textContent == board[row][col]){
        str += 'S';
      }
      else str += board[row][col];
      str += "</td>";
    }
    str += "</tr>";
  }
  str += "</table>";

  document.getElementById("ff").innerHTML = str;
}

function RandomGenerator(min, max) {
  return Math.floor(Math.random() * (max - min) + min);
}

showTable(-1);

var getUnique = function(){
  var tdElements = document.querySelectorAll('#ff td');
  tdElements[
    RandomGenerator(0, tdElements.length)
  ].classList.add('uniqueCell');
  // update the text of the cell using the class
  document.querySelector('.uniqueCell').textContent = 'S';
};
getUnique();
td{
  border:2px solid black;
  width:10px;
  height:10px;
  text-align: center;
}
td:hover{background-color:lightgreen;}
.grn{
  background-color:green;
  color:white;
}

.uniqueCell {
  background-color: tomato;
}
<div id="ff"></div>

关于javascript - 从表中选择一个单元格并为其指定唯一的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60376657/

相关文章:

javascript - 使用 yui 在纯菜单中寻找正确的 jQuery 选择器

html - CSS:为什么样式化按钮元素与其他 CSS 不同?

javascript - require() 和 $ 未在 Electron 中定义

php - 仅使用 index.php 和数据库的网站

jquery - 相对于带有滑动侧边栏的父 Div 的固定位置

CSS 960 填充页面

javascript - 将匿名对象添加到对象

javascript - Twitter bootstrap 2.3.2 弹出窗口在悬停时保持打开状态

javascript - 为选择器中的每个元素触发事件,只需触发一次

javascript - 使用索引和 Jquery 设置 HTML 元素的颜色