为了账号安全,请及时绑定邮箱和手机立即绑定

【JS】Tab面板

标签:
JavaScript

https://img1.sycdn.imooc.com//5d2d7ab700012c5207220487.jpg

微信订阅号:Rabbit_svip

https://img1.sycdn.imooc.com//5d2d7ac2000176e900300027.jpg

微信订阅号:Rabbit_svip

HTML代码

<input type="button" value="1"><input type="button" value="2"><input type="button" value="3"><div class="d1">d1</div><div class="d2">d2</div><div class="d3">d3</div>

JS代码

var aInput = document.getElementsByTagName('input');var div = document.getElementsByTagName('div');function show(a) {    return function() {        for(var j = 0; j<div.length; j++) {            if(j != a) {
                div[j].style.display = 'none';
            }
            div[a].style.display = 'block';
        }
    }
}for(var i = 0; i<aInput.length; i++) {
    aInput[i]. = show(i);
}





CSS自己调。

这个简单的Tab面板切换,需要注意的地方是用了2个for循环。

for(var i = 0; i<aInput.length; i++) {
    aInput[i]. = show(i);
}


这个循环的作用是为每个input标签绑定一个点击事件。之所以要在点击之后还要调用另一个函数,是因为for循环的执行速度太快了,在点击button之后的瞬间,i就变成了3。如果不调用另一个函数,而是在之后就等于一个function,出现的情况是不管点哪个button,最后显示的都会是最后一个面板。

for(var i = 0; i<aInput.length; i++) {
    aInput[i]. = function() {        console.log(i);
    }
};



如果代码是这样,可以看到最后输出的都是 3 。

https://img1.sycdn.imooc.com//5d2d7b3a0001414700280027.jpg

所以正确方法是在绑定之后,通过传参,把点击那刻 i 的值传给show()函数。然后再通过 show() 函数去设置该显示哪个div。



作者:滑滑兔
链接:https://www.jianshu.com/p/95dfa386cf56


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消