您遇到的问题是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 小提琴演示。
当然,如果我们使用class
元素的,我们不妨使用 CSS 来设置元素的样式:
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 小提琴演示。
之前的 JavaScript 可以简化为(使用相同的 CSS):
function btnColor(btn) {
var property = document.getElementById(btn);
property.className = 'toggled' == property.className ? '' : 'toggled';
}
JS 小提琴演示。