设置botton 按钮的背景颜色不成功

在选项卡练习中设置botton的背景颜色不成功,查了很久也没看出究竟出来,请求各位大神帮忙看看到底是哪里漏了步骤,还是某些设置有冲突。。。

图片描述
<!doctype html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>Document</title>

</head>
<style type="text/css">

#div1.active{
    background: yellow;
}
#div1 div{
          width: 200px;
          height: 200px;
          background:#222;
          border: 1px solid #999;
          display: none;
}

</style>
<script type="text/javascript">

window.onload=function()
{
    var oDiv=document.getElementById('div1');
    var    aBtn=oDiv.getElementsByTagName('input');
    var    aDiv=oDiv.getElementsByTagName('div');

    for (var i = 0; i < aBtn.length; i++)
     {
        aBtn[i].onclick=function()
        {
            for (var i = 0; i < aBtn.length; i++)
            {
                aBtn[i].className='';
            }
            this.className='active';
        };
    };
};

</script>
<body>

<div id="div1">
    <input class="active" type="button"  value="教育"/>
    <input type="button"  value="培训"/>
    <input type="button"  value="招生"/>
    <input type="button"  value="出国"/>
    <div style="display: block;">1111</div>
    <div>2222</div>
    <div>3333</div>
    <div>4444</div>
</div>

</body>
</html>

阅读 5k
5 个回答

第一个for循环里的

aBtn.onclick = function(){...};

替换成

aBtn.onclick = (function(i){ ... })(i)

for循环里面不是块级作用域,i的值早已变化。
具体解释参看一下 js闭包和作用域。

css方面的问题

div1.active{
    background: yellow;
}

div1.active是给#div加class="active"的,不是给#div1的子集加.active.

js的问题,以下是部分代码

for (var i = 0; i < aBtn.length; i++){
    aBtn[i].className='';
}
    this.className='active';

你不觉得你上面aBtn[i].className='';和this.className='active';有点冲突吗?
this就是当前的btn啊

你都没有定义class为active的样式

#div1.active{
    background: yellow;
}

这句的意思是class为active,id为div1的元素,并不是 #div1下的class为active的元素啊
应该是这样的 #div1 .active{}

楼主,把下面的这部分替换你现有对应的之后,看看是不是达到你想要的结果了
aBtn[i].onclick=function(){

for(var j = 0; j < aBtn.length; j++){
    aBtn[j].className='';
}
aBtn[i].className='active';

};

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题