我想让JavaScript检查我的css代码并返回我,如果背景颜色= #222327,它会将背景颜色更改为#29fd53,但如果旧的背景颜色= #29fd53,它会将背景颜色更改为#222327
我的JS代码
function changeBgC(){
var body = document.getElementsByTagName("body")[0];
var computedStyle = window.getComputedStyle(body)
var bodyBackgroundValue = computedStyle.getPropertyValue("background-color")
console.log(bodyBackgroundValue);
if (bodyBackgroundValue == "#222327") {
document.querySelector('body').style.backgroundColor = "#29fd53"
} else {
document.querySelector('body').style.backgroundColor = "#222327"
}
}
.body{
width: 100%;
height: 100vh;
min-height: 100vh;
background: #222327;
}
<div class="box">
<button onclick="changeBgC()" class="menuButton">≣</button>
</div>
我只是尝试使用i++(我在我的html代码中使用onclick),但它只将背景颜色更改为#29fd53。当我再次按下按钮时,它不会做任何事情。
这就是我的尝试
function changeBgC(){
var i = 0
if (i % 2 === 0){
document.querySelector('.body').style.backgroundColor = "#29fd53"
console.log(i);
i+=1
}else{
document.querySelector('.body').style.backgroundColor = "#222327"
i+=1
}
}
4条答案
按热度按时间mrwjdhj31#
你的问题在于在函数作用域内设置i变量。所以每次你调用changeBgC()时,它都会设置i = 0。
在函数外声明i,它应该可以工作
vi4fp9gy2#
这可以通过使用
class
而不是function
来实现。这样就可以封装i
变量。我使用了私有成员(#
),因为它们在类外部不需要。svgewumm3#
正如@Teemu上面提到的
getComputedStyle()
返回一个rgb()
值,所以要获得HEX代码,你可以使用css变量,而不是写一个函数来从RGB转换到HEX,用于删除尾随空格的trim函数
ct3nt3jp4#
不要使用JavaScript直接改变元素的样式来切换主题。
但是,切换主题的更好解决方案是使用CSS变量,而不是直接使用JavaScript更改元素的样式。
这种方法有几个好处,包括更好的性能,更容易维护,更灵活。下面是一个如何使用CSS变量在浅色和深色主题之间切换的示例:
1.使用CSS变量更改颜色:
1.切换主题:
1.别忘了为主体添加一个初始类,其中包含以下主题之一:
一个三个三个一个