JS——tab函数封装

1、为li标签添加index属性,这个属性正好就是span标签数组的index值

2、函数封装适合页面有多个tab切换,需要注意的在获取的li标签和span标签对象时,必须将对应div对象作为参数传入

li标签添加index属性

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            width: 500px;
            height: 400px;
            border: 1px solid #b6ff00;
            overflow: hidden;
            margin: 100px auto;
        }

        ul {
            width: 510px;
            height: 40px;
            list-style: none;
        }

        li {
            float: left;
            width: 101px;
            height: 40px;
            text-align: center;
            font: 400 15px/40px "simsun";
            background-color: beige;
            cursor: pointer;
        }

        span {
            display: none;
            width: 500px;
            height: 360px;
            background-color: #ffd800;
            text-align: center;
            font: 700 150px/360px "simsun";
        }

        .current {
            background-color: #ffd800;
        }

        .show {
            display: block;
        }
    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>鞋子</li>
            <li>上衣</li>
            <li>下装</li>
            <li>棉衣</li>
            <li>夏装</li>
        </ul>
        <span>鞋子</span>
        <span>上衣</span>
        <span>下装</span>
        <span>棉衣</span>
        <span>夏装</span>
    </div>
    <script>
        var lis = document.getElementsByTagName("li");
        var sps = document.getElementsByTagName("span");
        for (var i = 0; i < lis.length; i++) {
            lis[i].index = i;
            lis[i].onmouseover = function () {
                for (var j = 0; j < lis.length; j++) {
                    lis[j].className = "";
                    sps[j].className = "";
                }
                this.className = "current";
                sps[this.index].className = "show";
            }
        }
    </script>
</body>
</html>

函数封装版本

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box {
            width: 500px;
            height: 400px;
            border: 1px solid #b6ff00;
            overflow: hidden;
            margin: 100px auto;
        }

        ul {
            width: 510px;
            height: 40px;
            list-style: none;
        }

        li {
            float: left;
            width: 101px;
            height: 40px;
            text-align: center;
            font: 400 15px/40px "simsun";
            background-color: beige;
            cursor: pointer;
        }

        span {
            display: none;
            width: 500px;
            height: 360px;
            background-color: #ffd800;
            text-align: center;
            font: 700 150px/360px "simsun";
        }

        .current {
            background-color: #ffd800;
        }

        .show {
            display: block;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul>
            <li>鞋子</li>
            <li>上衣</li>
            <li>下装</li>
            <li>棉衣</li>
            <li>夏装</li>
        </ul>
        <span>鞋子</span>
        <span>上衣</span>
        <span>下装</span>
        <span>棉衣</span>
        <span>夏装</span>
    </div>
    <div class="box">
        <ul>
            <li>鞋子</li>
            <li>上衣</li>
            <li>下装</li>
            <li>棉衣</li>
            <li>夏装</li>
        </ul>
        <span>鞋子</span>
        <span>上衣</span>
        <span>下装</span>
        <span>棉衣</span>
        <span>夏装</span>
    </div>
    <div class="box">
        <ul>
            <li>鞋子</li>
            <li>上衣</li>
            <li>下装</li>
            <li>棉衣</li>
            <li>夏装</li>
        </ul>
        <span>鞋子</span>
        <span>上衣</span>
        <span>下装</span>
        <span>棉衣</span>
        <span>夏装</span>
    </div>
    <script>
        var boxs = document.getElementsByClassName("box");
        for (var i = 0; i < boxs.length; i++) {
            tabSwitch(boxs[i]);
        }
        function tabSwitch(ele) {
            var lis = ele.getElementsByTagName("li");
            var sps = ele.getElementsByTagName("span");
            for (var i = 0; i < lis.length; i++) {
                lis[i].index = i;
                lis[i].onmouseover = function () {
                    for (var j = 0; j < lis.length; j++) {
                        lis[j].className = "";
                        sps[j].className = "";
                    }
                    this.className = "current";
                    sps[this.index].className = "show";
                }
            }
        }
    </script>
</body>
</html>

时间: 2024-10-08 00:30:10

JS——tab函数封装的相关文章

js匿名函数封装

js匿名函数封装 (function(root,factory){ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (root.Demo = factory()); })(this,function(){ funct

js getByClass函数封装

1 function getByClass(oParent, sClass) 2 { 3 var aEle=oParent.getElementsByTagName('*'); 4 var aResult=[]; 5 var i=0; 6 7 for(i=0;i<aEle.length;i++) 8 { 9 if(aEle[i].className==sClass) 10 { 11 aResult.push(aEle[i]); 12 } 13 } 14 15 return aResult; 16

react request.js 函数封装

1.request.js  函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from '../store'; import { push } from 'react-router-redux'; import qs from 'qs'; // 请求路径 const BaseUrl = 'https://www.baidu.com/'; // 主机及端口 //axios默认配置请求的

js对函数参数的封装

对函数参数的封装 一个原始函数有n个参数,用wrap对函数进行封装,生成一个新的函数,当给它传入参数数量为n的时候,将执行原始函数,否则不执行 //函数封装 function wrap(func){ let len=func.length,cache=[] return function () { cache.push.apply(cache,arguments) if(cache.length<len){ return arguments.callee }else{ return func.a

js构建函数优秀案例

这几个效果函数是看到别人写的,挺好的,复制下来学习备用! 函数封装: //var _hmt = _hmt || [];(function() {var hm = document.createElement("script");hm.src = "//hm.baidu.com/hm.js?62be88d37b49a5ca149df10c84d83824";var s = document.getElementsByTagName("script"

JS类的封装及实现代码

js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. 定义js类 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 代码如下: function ShapeBase() { this.show = functi

JS类的封装及实现代码(转)

js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. 定义js类 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 代码如下: function ShapeBase() { this.show = functi

tab 插件封装

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须