如何在javascript中更改按钮颜色
How to change button color in javascript?
我有 5 个buttons
,它们都是blue
. 当您单击其中一个按钮时,单击的按钮应更改为 red
. 但是其他四个按钮应该保留在 blue
. 此外,如果单击该按钮两次或更多次,则不应将颜色更改回 blue
。 例如,如果我单击button one
它将更改为red
,如果我再次单击button one
,它应该是red
而不是blue
,只有单击另一个按钮时颜色才会改变。 这就像radio
按钮,但我需要一个<a>
标签,我不能使用radio buttons
.HTML
<div class="text-center">
<a onclick="changeColor()" href="applications-new.php?program_id=1" id="one" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp I</a>
<a onclick="changeColor()" href="applications-new.php?program_id=2" id="two" name="program-2" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp II</a>
<a onclick="changeColor()" href="applications-new.php?program_id=3" id="three" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp III</a>
<a onclick="changeColor()" href="applications-new.php?program_id=4" id="four" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSPP I</a>
<a onclick="changeColor()" href="applications-new.php?program_id=5" id="five" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSAT</a>
.JS
function changeColor(){
if(document.getElementById('one').clicked === true)
{
document.getElementById('one').style.background = "red";
}else {
document.getElementById('one').style.background = "#012D6B";
}
if(document.getElementById('two').clicked === true)
{
document.getElementById('two').style.background = "red";
}else {
document.getElementById('two').style.background = "#012D6B";
}
if(document.getElementById('three').clicked === true)
{
document.getElementById('three').style.background = "red";
}else {
document.getElementById('three').style.background = "#012D6B";
}
if(document.getElementById('four').clicked === true)
{
document.getElementById('four').style.background = "red";
}else {
document.getElementById('four').style.background = "#012D6B";
}
if(document.getElementById('five').clicked === true)
{
document.getElementById('five').style.background = "red";
}else {
document.getElementById('five').style.background = "#012D6B";
}
}
我的js
不起作用。 另外,我相信有一种更好的方法可以在没有 5 个if
和 5 个else
语句的情况下做到这一点
PS:这是我的css
以防万一:
.bkgrnd-dkblue {
background-color: #012D6B;
color: #FFF;
}
.btn-width{
width:130px;
}
.change-btn-color:hover {
background-color: #9DC9BA;
}
谢谢
创建一个使背景为红色的类,然后在单击的元素上切换该类。当您第一次单击该按钮时,它将添加类,并且背景将更改。当您再次单击它时,它将删除该类并再次将背景色变为"正常"。
.HTML:
<div class="text-center">
<a onclick="changeColor(this)" href="applications-new.php?program_id=1" id="one" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp I</a>
<a onclick="changeColor(this)" href="applications-new.php?program_id=2" id="two" name="program-2" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp II</a>
<a onclick="changeColor(this)" href="applications-new.php?program_id=3" id="three" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp III</a>
<a onclick="changeColor(this)" href="applications-new.php?program_id=4" id="four" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSPP I</a>
<a onclick="changeColor(this)" href="applications-new.php?program_id=5" id="five" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSAT</a>
.JS:
function changeColor(el){
jQuery(el).toggleClass('red');
}
.CSS:
.red {
background-color:red;
}
$(".btn").click(function(e) {
$(".btn").removeClass("btn-red"); //fallback
$(this).addClass("btn-red"); // add color
});
.btn {
display:inline-block;
text-decoration:none;
padding:6px 12px;
color:#fff;
}
.btn-blue {
background-color:blue;
}
.btn-red {
background-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="#" class="btn btn-blue">button</a>
<a href="#" class="btn btn-blue">button</a>
<a href="#" class="btn btn-blue">button</a>
<a href="#" class="btn btn-blue">button</a>
<a href="#" class="btn btn-blue">button</a>
var specialColor='red';
var defaultColor='#012D6B';
$(".text-center a").bind("click",function(){
$(this).css("background-color",specialColor);
var currentId=$(this).attr('id');
$(".text-center a[id!="+currentId+"]").css("background-color",defaultColor);
});
我认为这会对你有所帮助,但你必须在文件/项目中包含jquery。https://jsfiddle.net/bqL7sqde/
由于你没有使用jQuery,我假设你想使用纯Javascript。您可以做的是调用changeColor(this)来传入单击的元素,然后将元素的颜色更改为红色。然后检索同级元素并将除单击的项目以外的其他项目更改为蓝色。下面是一个带有示例的 JSFiddle。
https://jsfiddle.net/603obh3v/1/
function changeColor(element){
element.style.color = "red";
var siblings = element.parentElement.children;
for(var i = 0; i < siblings.length; i++) {
if(siblings[i] !== element) {
siblings[i].style.color = "blue";
}
}
}
<div class="text-center">
<a onclick="changeColor(this)" href="#" id="one" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp I</a>
<a onclick="changeColor(this)" href="#" id="two" name="program-2" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp II</a>
<a onclick="changeColor(this)" href="#" id="three" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp III</a>
<a onclick="changeColor(this)" href="#" id="four" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSPP I</a>
<a onclick="changeColor(this)" href="#" id="five" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSAT</a>
</div>
纯 JS 解决方案,
function changeColor(el, event) {
event.preventDefault(); //remove this line
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
var allAnchor = document.getElementsByTagName('a')
var temp = null;
for (var i = 0; i < allAnchor.length; i++) {
if (hasClass(allAnchor[i], 'btn')) {
temp = allAnchor[i];
temp.style.backgroundColor = "#012D6B";
}
};
el.style.backgroundColor = "#FF9800";
}
.bkgrnd-dkblue {
background-color: #012D6B;
color: #FFF;
}
.btn-width {
width: 130px;
}
.change-btn-color:hover {
background-color: #9DC9BA !important;
}
/*custom style below*/
a {
padding: 5px;
border: 1px solid #9E9E9E;
text-decoration: none;
transition: background ease-in .2s;
}
div.text-center {
display: block
}
<div class="text-center">
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=1" id="one" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp I</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=2" id="two" name="program-2" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp II</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=3" id="three" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp III</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=4" id="four" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSPP I</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=5" id="five" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSAT</a>
JavaScript替代方法
function changeColor(el, event) {
event.preventDefault(); //remove this line
var allAnchor = document.querySelectorAll('a.btn');
for (var i = 0; i < allAnchor.length; i++)
allAnchor[i].className = allAnchor[i].className.replace(/active/g, '');
el.className += ' active';
}
.bkgrnd-dkblue {
background-color: #012D6B;
color: #FFF;
}
.btn-width {
width: 130px;
}
.change-btn-color:hover {
background-color: #9DC9BA;
}
/*custom style below*/
a {
padding: 5px;
border: 1px solid #9E9E9E;
text-decoration: none;
transition: background ease-in .2s;
}
div.text-center {
display: block
}
a.active,
a.active:hover {
background: #FF9800;
}
<div class="text-center">
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=1" id="one" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp I</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=2" id="two" name="program-2" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp II</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=3" id="three" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp III</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=4" id="four" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSPP I</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=5" id="five" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSAT</a>
</div>
与 Jquery
$('a.btn').on('click', function(e) {
e.preventDefault(); //remove this line
$('a.btn').removeClass('active');
$(this).addClass('active');
})
.bkgrnd-dkblue {
background-color: #012D6B;
color: #FFF;
}
.btn-width {
width: 130px;
}
.change-btn-color:hover {
background-color: #9DC9BA;
}
/*custom style below*/
a {
padding: 5px;
border: 1px solid #9E9E9E;
text-decoration: none;
transition: background ease-in .2s;
}
div.text-center {
display: block
}
a.active,
a.active:hover {
background: #FF9800;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="text-center">
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=1" id="one" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp I</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=2" id="two" name="program-2" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp II</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=3" id="three" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">Boot Camp III</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=4" id="four" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSPP I</a>
<a onclick="changeColor(this,event)" href="applications-new.php?program_id=5" id="five" name="program-1" class="btn btn-md bkgrnd-dkblue btn-width change-btn-color">LSAT</a>
希望这有帮助..:)
- 使用event.target.classlist区分按钮颜色
- 如何使用带有多个按钮的javascript更改按钮颜色
- Highcharts上下文按钮颜色
- 在提交时更改按钮颜色,直到输入新文本
- 如何在javascript中更改按钮颜色
- 根据字段值更改页面加载时的按钮颜色
- 我想在单击时更改按钮颜色和文本,并且在刷新页面时它不应该更改
- 单击另一个按钮后如何更改按钮颜色
- 按钮颜色在切换时不会更改多个按钮
- 默认按钮颜色
- 当我使用jQuery Mobile的UI时,如何在jQuery Mobile中切换单击的导航按钮颜色
- 当管理员在管理面板中获得新任务时,如何更改菜单按钮颜色
- 单击时更改按钮颜色
- 无法更改Bootbox中确认框的按钮颜色
- 更改按钮颜色,即使在单击后也是如此
- 根据表中的另一列更改按钮颜色
- 使用addEventListener切换按钮颜色
- AJAX数据库更新与CSS按钮颜色改变使用Codeigniter
- 单选按钮颜色选择器
- 随着背景颜色的变化而改变按钮颜色