试图通过单击更改单元格的颜色。
单元格通常为灰色,并且第一次单击时应变为红色。当我单击一个红色单元格时,它应该再次变为灰色。
function changeColor(cell) {
var red = '#FE2E2E';
var grey = '#E6E6E6';
if (cell.style.backgroundColor == grey) {
cell.style.backgroundColor = red;
} else {
if (cell.style.backgroundColor == red) {
cell.style.backgroundColor = grey;
}
};
};
#table tr td {
width: 20px;
height: 50px;
cursor: pointer;
background-color: #E6E6E6;
border: 1px solid black;
}
<table class="table table-bordered" id="table">
<tbody>
<tr>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
</tr>
</tbody>
</table>
我也尝试过使用
.style.bgColor
,rgb
和if (cell.style.backgroundColor ===
,但这也不起作用。单元格背景色的值可以是.backgroundColor:''或.bgColor:undefined。 最佳答案
从style.backgroundColor
取回的值不太可能采用您设置的相同格式。它可以采用浏览器想要的任何格式。
一种最小的更改方法是在元素上存储标志(请参见注释):
function changeColor(cell) {
var red = '#FE2E2E';
var grey = '#E6E6E6';
// Get a flag; will be falsy if not there at all
var flag = cell.getAttribute("data-grey");
if (!flag) {
// Make it grey
cell.setAttribute("data-grey", "true");
cell.style.backgroundColor = red;
} else {
// Not grey, make it red
cell.setAttribute("data-grey", ""); // blank is falsy
cell.style.backgroundColor = grey;
}
}
#table tr td {
width: 20px;
height: 50px;
cursor: pointer;
background-color: #E6E6E6;
border: 1px solid black;
}
<table class="table table-bordered" id="table">
<tbody>
<tr>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
</tr>
</tbody>
</table>
...但是正确的做法是添加/删除类,并使用CSS进行相应的样式设置(请参阅注释):
// See https://developer.mozilla.org/en-US/docs/Web/API/Element/classList for classList info
function changeColor(cell) {
// adds or removes the active class
cell.classList.toggle("active");
}
#table tr td {
width: 20px;
height: 50px;
cursor: pointer;
background-color: #E6E6E6;
border: 1px solid black;
}
/* A class we can toggle to override the color above */
#table tr td.active {
background-color: #fe2e2e;
}
<table class="table table-bordered" id="table">
<tbody>
<tr>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
<td onclick="changeColor(this)"></td>
</tr>
</tbody>
</table>
关于javascript - style.backgroundColor不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39852228/