效果如图所示:

 

 ES5:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #container {
            width: 670px;
            margin: 0;
            padding: 0;
        }
        .box {
            width: 670px;
            height: 400px;
            border: 1px solid black;
            clear: both;
            display: none;
        }
        ul {
            list-style: none;
        }
        ul li {
            float: left;
            width: 200px;
            height: 50px;
            line-height: 50px;
            margin-left: 5px;
            border: 1px solid #ddd;
            text-align: center;
            cursor: pointer;
        }
        .color {
            background-color: brown;
            color: #fff;
        }
    </style>
</head>
<body>
    <div id="container">
        <ul>
            <li class="color">第一页</li>
            <li>第二页</li>
            <li>第三页</li>
        </ul>
        <div class="box" style="display: block;">第一模块</div>
        <div class="box">第二模块</div>
        <div class="box">第三模块</div>
    </div>
    <script>
        var lis = document.querySelectorAll('li');
        var div = document.querySelector('#container').querySelectorAll('div')
        console.log(div);
        for (var i = 0; i < lis.length; i++) {
            lis[i].setAttribute('index', i)
            lis[i].onclick = function () {
                for (var i = 0; i < lis.length; i++) {
                    lis[i].className = ''
                }
                this.className = 'color'
                var index = this.getAttribute('index');
                for (var i = 0; i < div.length; i++) {
                    div[i].style.display = 'none'
                }
                div[index].style.display = 'block'
            }
        }
    </script>
</body>

</html>

ES6写法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>面向对象-选项卡</title>
    <style>
        #container {
            width: 670px;
            margin: 0;
            padding: 0;
        }
        .box {
            width: 670px;
            height: 400px;
            border: 1px solid black;
            clear: both;
            display: none;
        }

        ul {
            list-style: none;
        }

        ul li {
            float: left;
            width: 200px;
            height: 50px;
            line-height: 50px;
            margin-left: 5px;
            border: 1px solid #ddd;
            text-align: center;
            cursor: pointer;
        }
        
        .box{
            display: none;
        }
        .color {
            background-color: brown;
            color: #fff;
        }
    </style>
</head>
<body>
<div id="div2">
    <ul>
        <li class="color">第一页</li>
        <li>第二页</li>
        <li>第三页</li>
    </ul>
</div>
<div class="box" style="display:block;">第一模块</div>
<div class="box">第二模块</div>
<div class="box">第三模块</div>
</body>
</html>
<script type="text/javascript">
    window.onload = function () {
        var oTab = new Tab("div2");
    }
    var lis = null;
    var div = null;
    function Tab(id){
        var div2 = document.getElementById(id);
        this.lis = div2.getElementsByTagName('li');//全局变量 转变成属性
        this.div = document.getElementsByClassName('box');
        var _this =this;//将这里的对象this存入_this中,方便在列表点击里面用
        for(i=0;i<this.lis.length;i++){
            this.lis[i].index = i;
            this.lis[i].onclick = function () {
                _this.tab(this);//这里的this指的是列表,把它作为参数传到函数中;
                
            }
        }
    }
    Tab.prototype.tab = function (lis){//函数 转变成对象的方法
        // alert(this);    //这里的this指的是对象object;
        for(i=0;i<this.lis.length;i++){
            this.lis[i].className = '';
            this.div[i].style.display = 'none';
        }
        lis.className = 'color';
        this.div[lis.index].style.display = 'block';
    }
</script>


本文转载:CSDN博客