简体   繁体   English

单击按钮时如何更改另一个按钮的颜色?

[英]How to change the color of another button when a button click?

I need to allow only one button to click at once.我需要一次只允许单击一个按钮。 As an example, if user clicks on btn1 then its background color change from transparent to green.例如,如果用户单击 btn1,则其背景颜色从透明变为绿色。 Then if user clicks on btn2, btn1 background color should be changing from transparent to red,and btn1 background color should be changing from green to transparent.然后如果用户点击 btn2,btn1 背景颜色应该从透明变为红色,btn1 背景颜色应该从绿色变为透明。 Additionally I need a toggle for both buttons另外我需要两个按钮的切换

 function myFunction(str) { var element = document.getElementById("btn1"); var element1 = document.getElementById("btn2"); if(str==1){ document.getElementById("btn2").style.backgroundColor =""; element.classList.toggle("mystyle"); }else{ element1.classList.toggle("mystyle1"); document.getElementById("btn1").style.backgroundColor =""; } }
 .mystyle { background-color: green; color: white; }.mystyle1 { background-color: red; color: white; }
 <button class="" id="btn1" onclick="myFunction(1)">Upvote </button> <button class=""id="btn2" onclick="myFunction(-1)">Down Vote</button>

You can use the element.classList.remove()您可以使用element.classList.remove()

 function myFunction(str) { var element = document.getElementById("btn1"); var element1 = document.getElementById("btn2"); if(str==1){ element1.classList.remove("mystyle1"); element.classList.toggle("mystyle"); }else{ element1.classList.toggle("mystyle1"); element.classList.remove("mystyle"); } }
 .mystyle { background-color: green; color: white; }.mystyle1 { background-color: red; color: white; }
 <button class="" id="btn1" onclick="myFunction(1)">Upvote </button> <button class=""id="btn2" onclick="myFunction(-1)">Down Vote</button>

Utilizing jQuery's toggleClass you can write a clean solution to dynamically change the background color of the buttons.利用jQuery 的 toggleClass ,您可以编写一个干净的解决方案来动态更改按钮的背景颜色。

 var btnUp = $('#btn-up'); var btnDown = $('#btn-down'); btnUp.click(function() { $(this).toggleClass('btn-green'); btnDown.removeClass('btn-red'); }); btnDown.click(function() { $(this).toggleClass('btn-red'); btnUp.removeClass('btn-green'); });
 .btn { background-color: transparent; }.btn-green { background-color: green; }.btn-red { background-color: red; }
 <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <button id="btn-up" class="btn">Up Vote</button> <button id="btn-down" class="btn">Down Vote</button>

After reading your code I've done some changes in your js function and it will work as per your expectation:阅读您的代码后,我对您的 js function 做了一些更改,它将按照您的期望工作:

function myFunction(str) {
         var element = document.getElementById("btn1");
         var element1 = document.getElementById("btn2");
            
           if(str==1){
           
               element.classList.toggle("mystyle");
               element1.className = '';
           
            } else{
            
               element1.classList.toggle("mystyle1");
               element.className = '';
          
            }

        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM