使用JavaScript更改背景颜色
change background color with JavaScript
我有一个包含n*n个div的主div,这些div要么有黑色背景,要么有白色背景。
我希望他们通过点击主分区来更改他们的BGcolor。
这是我的代码(显然不起作用)。
function invert(){
var divs = document.getsElementsByTagName("div");
for(i=0; i<divs.length; i++){
if(divs[i].style.backgroundColor=="black")
{
divs[i].style.backgroundColor="white";
}
else if (divs[i].style.backgroundColor=="white")
{
divs[i].style.backgroundColor="black";
}
}
}
如果你没有明确设置背景色,它可能仍然是""
(至少我在Firefox中看到的是这样),所以你的If条件都不匹配。
相反,如果你检测到当前颜色没有设置,你也可以切换到黑色:
var color = divs[i].style.backgroundColor;
if (color === "black")
divs[i].style.backgroundColor = "white";
else if (!color || color === "white")
divs[i].style.backgroundColor = "black";
将所有DIV
的默认背景色设为白色。
向其中一些添加black
类。
使用classList.toggle
替换颜色:
document.body.onclick= function() {
var divs= document.querySelectorAll('div');
for(var i = 0 ; i < divs.length ; i++) {
divs[i].classList.toggle('black');
}
}
body, html {
height: 100%;
background: lightyellow;
}
div {
width: 50px;
height: 50px;
border: 1px solid #333;
display: inline-block;
background: white;
}
.black {
background: black;
}
<div class="black"></div>
<div></div>
<div class="black"></div>
<div></div>
<div class="black"></div>
<div class="black"></div>
<div></div>
<div></div>
实现这一点的两种方法:
1-style.backgroundColor
(如果您让bg颜色信息内联):
function turnthelights() {
var x = document.querySelectorAll(".inner");
var i;
for (i = 0; i < x.length; i++) {
if (x[i].style.backgroundColor === "black"){
x[i].style.backgroundColor = "white";
} else {
x[i].style.backgroundColor = "black";
}
}
}
body {
background-color: greenyellow;
}
.inner {
width: 80px;
height: 80px;
display: inline-block;
outline: 2px solid gold;
}
<div id=container onclick="turnthelights()">
<div class="inner" style="background-color: black"></div>
<div class="inner" style="background-color: white"></div>
<div class="inner" style="background-color: black"></div>
<div class="inner" style="background-color: white"></div>
<div class="inner" style="background-color: black"></div>
<div class="inner" style="background-color: white"></div>
</div>
2-getComputedStyle(element).backgroundColor
(bg颜色信息任何位置):
function turnthelights() {
var x = document.querySelectorAll(".inner");
var i;
for (i = 0; i < x.length; i++) {
var k = x[i];
var z = getComputedStyle(k).backgroundColor;
if (z == "rgb(0, 0, 0)"){
x[i].style.backgroundColor = "rgb(255, 255, 255)";
} else {
x[i].style.backgroundColor = "rgb(0, 0, 0)";
}
}
}
body {
background-color: hotpink;
}
.inner {
width: 80px;
height: 80px;
display: inline-block;
outline: 2px solid gold;
}
.black {
background-color: rgb(0, 0, 0);
}
.white {
background-color: rgb(255, 255, 255);
}
<div id=container onclick="turnthelights()">
<div class="inner black"></div>
<div class="inner white"></div>
<div class="inner black"></div>
<div class="inner white"></div>
<div class="inner black"></div>
<div class="inner white"></div>
</div>
现在2020年,我找到了真正的解决方案,获取样式和设置样式必须使用不同的方法:
function changeColor(cell) {
var red = "rgba(255, 4, 10, 1)"; //rgba or rgb, so if you really want to use this, you need use regexp.
var grey = "rgba(230, 230, 230, 1)"; //pls change your css to this too.
var style = cell.computedStyleMap().get('background-color').toString();
if (style == grey) {
cell.style.backgroundColor = red;
} else if (style == red) {
cell.style.backgroundColor = grey;
}
}
对于chrome来说,这是可以的,但是,也许其他浏览器有其他颜色格式,你需要测试它。
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用jquery更改html中的背景颜色
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- JS幻灯片与CSS背景颜色变化
- DT数据表背景颜色为黑色,但仍有悬停和选择颜色
- Javascript通过列表项的函数和css来更改背景颜色
- Javascript没有从数组中选择背景颜色
- 使用圆中的数组更改背景颜色项目
- 如何用jquery动画改变背景颜色,就像一个过渡
- 使用jquery交换并保存背景颜色
- j查询如何设置/取消设置下拉菜单的背景颜色
- 使用angularjs根据时间更改背景颜色
- 设置Dojo量表的背景颜色
- javascript样式的背景颜色在设置时闪烁.ASP.NET
- 使用javascript更改任意文本的背景颜色
- 在用Javascript更改背景颜色后:hover don'不要改变颜色
- 图像内部的透明背景颜色不受影响
- jQuery mobile-动态更改ui页面背景颜色
- 切换按钮的背景颜色
- JavaScript更改类的背景颜色