• javascript编写Tab选项卡


    <div class="box" id="tabFir">
        <ul >
            <li class="selected">页卡一</li>
            <li>页卡二</li>
            <li>页卡三</li>
        </ul>
        <div class="selected">内容一</div>
        <div>内容二</div>
        <div>内容三</div>
    </div>
    <script>
        window.onload = function(){
            var tabFir = document.getElementById('tabFir'),
            oLis = tabFir.getElementsByTagName('li'),
            oDivs = tabFir.getElementsByTagName('div');
            for (var i = 0; i < oLis.length; i++) {
                (function (num){
                    oLis[i].onclick = function(){
                        //形成了一个闭包
                        changeTab(num);
                    }
                })(i);
            }
            function changeTab(n) {
                for (var i = 0; i < oLis.length; i++) {
                    oLis[i].className = "";
                    oDivs[i].className = "";
                }
                oLis[n].className = 'selected';
                oDivs[n].className = 'selected';
            }
        }
    </script>

    这是最基本的一个选项卡的编写方式。第一步for循环为每个li 绑定了点击事件。这样做不太好。我们用事件委托的方法,把点击事件绑定在父级元素上。

    <script>
        window.onload = function(){
            var tabFir = document.getElementById('tabFir'),
            oLis = tabFir.getElementsByTagName('li'),
            oDivs = tabFir.getElementsByTagName('div');
            for(var i=0;i<oLis.length;i++){
                oLis[i].index = i;
            }
             //事件委托
            tabFir.addEventListener('click',function(e){
                //兼容性处理
                var event = e ||window.event;
                var target = event.target || event.srcElement;
                //判断是否匹配目标元素
                if(target.nodeName.toLocaleLowerCase() === 'li'){
                       var index = target.index;
                    changeTab(index);
                }
            });
            function changeTab(n) {
                for (var i = 0; i < oLis.length; i++) {
                    oLis[i].className = "";
                    oDivs[i].className = "";
                }
                oLis[n].className = 'selected';
                oDivs[n].className = 'selected';
            }
        }
    
    </script>
  • 相关阅读:
    MS SQL执行大脚本文件时,提示“未能完成操作,存储空间不足,无法处理此命令”的解决办法
    一、Flux 是什么?
    for...in for..of
    循环总结
    javascript中几种this指向问题
    redux
    布局方式
    js获取前几个月的具体日期
    动态引入js文件
    获取页面url信息
  • 原文地址:https://www.cnblogs.com/qianxunpu/p/8042839.html
Copyright © 2020-2023  润新知