按钮背景颜色切换
Posted
技术标签:
【中文标题】按钮背景颜色切换【英文标题】:Button background color toggle 【发布时间】:2013-06-07 15:41:23 【问题描述】:我一直在尝试切换按钮 onclick 的背景颜色属性,但颜色仅更改一次,并且不会来回切换。下面是代码。
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)');" />
【问题讨论】:
Console.logproperty.style.backgroundColor
就在 if
之前,您会看到实际值是多少。
【参考方案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>
【讨论】:
【参考方案2】:您遇到的问题是元素的background-color
在浏览器中的报告方式不同,无论是十六进制的 rgb、rgba(带或不带空格)还是 HSL...
所以按钮可能永远不会满足if
条件,这意味着它会总是转到else
。
考虑到这一点,我建议使用类名来跟踪取消/切换状态:
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 = '';
JS Fiddle demo.
当然,如果我们使用元素的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);
JS Fiddle demo.
之前的 javascript 可以简化为(使用相同的 CSS):
function btnColor(btn)
var property = document.getElementById(btn);
property.className = 'toggled' == property.className ? '' : 'toggled';
JS Fiddle demo.
【讨论】:
你建议我用什么?以上是关于按钮背景颜色切换的主要内容,如果未能解决你的问题,请参考以下文章