javascript - 如何通过仅更改父类来更改子类?

标签 javascript html css

我有一个包含黑色和白色单元格的表格,我想创建一个按钮来更改单元格的颜色。

我已经使用 for 循环完成了 jsfiddle.net

现在,我不想使用下面的功能。是否可以仅更改整个表的类属性来更改所有 td 标签的类?

function changeClors() {
var cells = document.getElementsByTagName('td');
for (var i = 0; i < cells.length; i++) {
    cSwap(cells[i])
}

最佳答案

是的,您可能只需要一个用于 table 的 css 类和一个将此类与您的表切换的函数。

这是你的 css 应该如何定义:

.myTable td{
  background: gray;
}

这是在表格中切换它的 JS 函数:

function toggleClass(){
    var table = document.querySelector("table");
    if(table.className !== "myTable"){
                table.className = "myTable";
    }else{
            table.className = '';
    }
}

演示:

这是一个 updated Demo :

function cSwap(cell) {
  if (cell.className == "t")
    cell.className = "t2";
  else if (cell.className == "t2")
    cell.className = "t";
}

function tableCreate(n) {
  var body = document.getElementsByTagName('body')[0];
  var tbl = document.createElement('table');
  tbl.setAttribute('onclick', 'cSwap(event.target)');
  for (var i = 0; i < n; i++) {
    var tr = document.createElement('tr');
    for (var j = 0; j < n; j++) {
      var td = document.createElement('td');
      tr.appendChild(td)
      td.classList.add('t');
    }
    tbl.appendChild(tr);
  }
  body.appendChild(tbl);
}

function changeClors() {
  var cells = document.getElementsByTagName('td');
  for (var i = 0; i < cells.length; i++) {
    cSwap(cells[i])
  }
}
tableCreate(5);

function toggleClass() {
  var table = document.querySelector("table");
  if (table.className !== "myTable") {
    table.className = "myTable";
  } else {
    table.className = '';
  }
}
td {
  border: 1px solid black;
  border-collapse: collapse;
  padding: 28px;
}

.t {
  background: white
}

.t2 {
  background: black
}

.myTable td {
  background: gray;
}
<body>
  <input type="button" value="Change colors" onclick="changeClors()">
  <input type="button" value="Change table" onclick="toggleClass()">
</body>

关于javascript - 如何通过仅更改父类来更改子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46590387/

相关文章:

html - graphviz html表节点居中而不是相同的等级

html - 在不同位置添加 2 个固定导航栏

javascript - 将网页的 CSS 转换为用于 react-native-render-html 的 javascript npm 包

javascript - 在不插入多余标签的情况下关闭 contenteditable 中的 <ul/> 标签

javascript - node.js JavaScript 中的变量不会改变

javascript - 动态下拉菜单 POST

javascript - 用动画翻转 3 个文本

html - 无法在段落上设置字体系列或字体大小

html - 删除 Outlook 2010 中的表格单元格间距

javascript - 如何为多个输入加载具有不同日期范围的日期时间选择器