[前端] js点击按钮改变样式

来源:互联网 发布:企业报表软件 编辑:程序博客网 时间:2024/05/21 01:45

         有时候我们希望实现点击按钮并切换样式的效果,一个简单的方法是链接到另一个页面,但是,在有些情况下,我们不希望这么做,因为我们改变的只是页面的很小一部分,我们没有必要为了这一小部分而刷新整个界面。

        另外,当我们希望在一个页面实现不同控件的样式切换时,比如第一个控件有4种切换方式,第二种控件有3种切换方式,那么这就意味着我们需要实现4X3 = 12种不同的页面,这是繁琐而没有必要的。

        我们只需要一段简单的js代码就能实现这个功能,实现原理是当捕捉到type = "button"的按钮事件时,我们直接修改它的样式(通过class属性)。

        此外,如果想要实现按钮切换下页面文字的改变等效果,可以给每个控件设置一个display属性,通过在响应事件中修改它的显示/隐藏属性。也就是说,一开始,我们把所有的东西都画了出来,只不过没有显示出来而已。(当然,如果涉及到信息安全问题,这样“裸露”的写法是不可行的)

  ————>

       

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>js控制按钮样式切换</title><link href="css/my.css" rel="stylesheet"></head><script type="text/javascript">//左边按钮的点击事件window.onload = function(){    var arr = document.getElementsByTagName('button');        for(var i = 0;i<arr.length;i++){            arr[i].onclick = function(){    //this是当前激活的按钮,在这里可以写对应的操作    if(this.className == 'btn1'){            this.className = 'btn2';    var name = this.id;    var btn = document.getElementsByClassName('btn2');        for(var j=0;j<btn.length;j++){        if(btn[j].id!=name){        btn[j].className = 'btn1';    }    }}             }          } }</script><body>    <div id="main" style="margin:auto 0">    <!--四个按钮--><div style="margin-top:2em;" align="center">  <div style="width:20%"><button id = "1" type = "button" class = "btn2"> 按钮1</button></div>      <div style="width:20%"><button  id = "2" type = "button" class = "btn1"> 按钮2</button></div>      <div style="width:20%"><button id = "3" type = "button" class = "btn1"> 按钮3</button></div>      <div style="width:20%"><button id = "4" type ="button" class = "btn1"> 按钮4</button></div></div></div>  </body></html>

        我们把样式写在my.css中:

.btn1{  border:none;  height:3.5em;  background-color:#000000;  color:white;  font-size:1.2em;  margin-top:0.5em;  width:100%;  border-radius:1em;}.btn2{  border:none;  height:3.5em;  background-color:#3E8CD0;  color:white;  font-size:1.2em;  margin-top:0.5em;  width:100%;  border-radius:1em;}

   

0 0