gpt4 book ai didi

javascript - style.backgroundColor 不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:21 26 4
gpt4 key购买 nike

尝试通过单击更改单元格的颜色。

这些单元格通常是灰色的,第一次点击它们应该变成红色。当我点击一个红色单元格时,它应该再次变成灰色。

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 , rgbif (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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com