我一直在尝试切换按钮的背景颜色属性,但颜色只会改变一次而不会来回切换。以下是代码。
function btnColor(btn, color) {
var property = document.getElementById(btn);
if (property.style.backgroundColor == "rgb(244,113,33)") {
property.style.backgroundColor=color;
}
else {
property.style.backgroundColor = "rgb(244,113,33)";
}
}
<input type="button" id="btnHousing" value="Housing" onclick="toggleLayer('transparent1');btnColor('btnHousing','rgb(255,242,0)');" />
答案 0 :(得分:4)
您遇到的问题是,在浏览器中报告元素的background-color
,rgb,rgba(带或不带空格)的十六进制或HSL ...
因此该按钮可能永远不会满足if
条件,这意味着总是转到else
。
考虑到这一点,我建议使用类名来跟踪un / toggled状态:
function btnColor(btn, color) {
var property = document.getElementById(btn);
if (property.className !== 'toggled') {
property.style.backgroundColor=color;
property.className = 'toggled'
}
else {
property.style.backgroundColor = "rgb(244,113,33)";
property.className = '';
}
}
当然,如果我们使用元素的class
,我们也可以使用CSS来 style 元素:
function btnColor(btn) {
var property = document.getElementById(btn);
if (property.className !== 'toggled') {
property.className = 'toggled'
}
else {
property.className = '';
}
}
使用CSS:
#btnHousing {
background-color: rgb(255,242,0);
}
#btnHousing.toggled {
background-color: rgb(244,113,33);
}
以前的JavaScript可以简化(使用相同的CSS):
function btnColor(btn) {
var property = document.getElementById(btn);
property.className = 'toggled' == property.className ? '' : 'toggled';
}
答案 1 :(得分:1)
if(document.getElementById(id).style.background !== 'rgb(0, 0, 0)')
答案 2 :(得分:1)
一个简单的解决方案(JS,CSS和HTML按顺序)。 你在CSS中设置一个类,然后选择按钮(是的,JS可以在一行中完成)并切换类。
var button1 = document.querySelector("button");
button1.addEventListener("click", function() {
document.body.classList.toggle("colorred");
});
.colorred {
background-color: red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Change color to background</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
</head>
<body>
<button>Click me!</button>
<script src="main.js"></script>
</body>
</html>