button 行级元素
三个文本框,div,
一开始,第一个button就加上控制背景色的class,另两个button没有
而 第一个文本框display设置成block 其他两个都是none
为每个button 绑定点击事件,这里要用立即函数(立即函数也是 匿名函数) 否则形成闭包
不然 每个button 绑定不上onclick
当点击时候,利用 for循环,把每一个 button 和 div的类 和 display 置空、设none
(就是把 上一个 效果 移除)
移除用 xx.className="" 脚本化css .style.display="none"
oBtn[j].className="";
div[j].style.display="none";
并且利用 this 把当前 button 的类 加上 原理和移除时 相似
this.className="active";
div[n].style.display="block";
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.active{
background-color: yellow;
}
/*按钮变色的类*/
.content{
width: 200px;
height: 200px;
border:1px solid black;
display: none;
}
/*display:none 有border也看不到*/
</style>
</head>
<body>
<button class="active">111</button>
<button>222</button>
<button>333</button>
<div class="content" style="display: block">111</div>
<div class="content">222</div>
<div class="content">333</div>
<script type="text/javascript">
//第一步,先画出 那个样子、布局
//三个 button,外加 三个 div
//第二步,考虑 实现功能:
//比如 button点击时要变色
//第三步,点击那个 按钮 就把 对应的 div 的display值变成 block,点击的 按钮要 变色,并 先把三个 div 和 按钮的效果 全清除
var oBtn=document.getElementsByTagName("button");
var div=document.getElementsByTagName("div");
//获得一组,一组三个
//给每个btn绑定点击事件
for(var i=0; i<oBtn.length; i++){
(function (n){
oBtn[n].οnclick=function(){
for(var j=0; j<oBtn.length; j++){
oBtn[j].className="";
div[j].style.display="none";
}
this.className="active";
div[n].style.display="block";
}
}(i))
}
// 问题:怎么让div框中的 字体居中
// 怎么点击这个按钮,就对应到相应的 div框
//
// 不明白 为什么 绑定的时候 要用立即函数
// 消除 效果时,不需要
// tips:
// 和 按钮不同的是,预设 是行间样式 改变 display
</script>
</body>
</html>