首页 > 编程语言 >使用JavaScript设置Tab栏自动切换

使用JavaScript设置Tab栏自动切换

时间:2024-04-07 22:24:17浏览次数:16  
标签:body head Tab solid JavaScript 切换 tab border

在下面代码中设置了tab栏可以进行周期性的切换时间时5秒,也可以鼠标移到相应的位置进行切换。

在允许过程中出现:Cannot read properties of undefined (reading 'className')报错,不知道时什么原因还没有解决,希望大佬来指点一下!!!!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tab栏切换</title>
    <script>
            // 加载事件
            window.onload=function(){
                //获取所有tab-head-div
                var head_divs = document.getElementById("tab-head").getElementsByTagName("div");
                //保存当前焦点元素索引
                var current_index=0;
                // 启动定时器
                var timer=window.setInterval(autoChange,5000);
                //遍历元素
                for(var i=0;i<head_divs.length;i++){
                    //添加鼠标滑动事件
                    head_divs[i].onmouseover = function(){
                        clearInterval(timer);
                        if(i != current_index){
                            head_divs[current_index].style.backgroundColor='';
                            head_divs[current_index].style.borderBottom='';
                        }
                        //获取所有tab-body-ul
                        var body_uls=document.getElementById("tab-body").getElementsByTagName("ul");
                        //遍历元素
                        for(var i=0;i<body_uls.length;i++){
                            //将所有元素设为隐藏
                            body_uls[i].className = body_uls[i].className.replace(" current","");
                            head_divs[i].className = head_divs[i].className.replace(" current","");
                            // 将当前索引对应的元素设为显示
                            if(head_divs[i] == this){
                                this.className += " current";
                                body_uls[i].className += " current";
                            }
                        }
                    }
                    //鼠标移出事件
                    head_divs[i].onmouseout = function(){
                        //启动定时器,恢复自动切换
                        timer = setInterval(autoChange,5000);
                    }
                }
                //定时器周期函数-tab栏自动切换
                function autoChange(){
                    //自增索引
                    ++current_index;
                    //当索引自增达到上限时,索引归0
                    if( current_index == head_divs.length ){
                        current_index=0;
                    }
                    //当前背景颜色和边框颜色
                    for(var i=0;i<head_divs.length;i++){
                        if(i == current_index){
                            head_divs[i].style.backgroundColor='#fff';
                            head_divs[i].style.borderBottom='1px solid #fff';
                        }else{
                            head_divs[i].style.backgroundColor='';
                            head_divs[i].style.borderBottom='';
                        }
                    }
                    //获取所有tab-body-ul
                    var body_uls=document.getElementById("tab-body").getElementsByTagName("ul");
            
                    //遍历元素
                    for(var i=0;i<body_uls.length;i++){
                        //将所有元素设为隐藏
                        body_uls[i].className = body_uls[i].className.replace(" current","");
                        head_divs[i].className = head_divs[i].className.replace(" current","");
                        // 将当前索引对应的元素设为显示
                        if(head_divs[i] == head_divs[current_index]){
                            this.className += " current";
                            body_uls[i].className += " current";
                        }
                    }
                }
            }
        </script>
</head>
<style>
    body{font-size: 14px;font-family: "宋体";}
    body,ul,li{list-style: none;margin: 0;padding: 0;}
    /* 设置Tab整体大盒子 */
    .tab-box{
        width: 383px;
        margin: 10px;
        border: 1px solid #ccc;
        border-top: 2px solid #206F96;
    }
    /* 设置Tab栏选项样式 */
    .tab-head{height: 31px;}
    .tab-head-div{
        width: 95px;
        height: 30px;
        float: left;
        border-bottom: 1px solid #ccc;
        border-right: 1px solid #ccc;
        background: #eee;
        line-height: 30px;
        text-align: center;
        cursor: pointer;
    }
    .tab-head .current{
        background: #fff;
        border-bottom: 1px solid #fff;
    }
    .tab-head-r{border-right: 0;}
    /* 设置tab栏选项内容样式 */
    .tab-body-ul{
        display: none;
        margin: 20px 10px;
    }
    .tab-body-ul li{margin: 5px;}
    .tab-body .current{display: block;s}
</style>

<body>
    <div class="tab-box">
        <div class="tab-head" id="tab-head">
            <dic class="tab-head-div current" >网页设计</dic>
            <dic class="tab-head-div">前端开发</dic>
            <dic class="tab-head-div">人工智能</dic>
            <dic class="tab-head-div tab-head-r">电商运营</dic>
        </div>
        <div class="tab-body" id="tab-body">
            <ul class="tab-body-ul current">
                <li>HTML+CSS3网页设计与制作</li>
                <li>互联网产品设计思维与实践</li>
                <li>Photoshop CS6 图像设计案例教程</li>
                <li>跨平台UI设计宝典</li>
            </ul>
            <ul class="tab-body-ul">
                <li>javaScript+JQuery交互式web前端开发</li>
                <li>Vue.js前端开发实战</li>
                <li>微信小程序开发实践</li>
                <li>JavaScript前端开发案例教程</li>
            </ul>
            <ul class="tab-body-ul">
                <li>程序开发案例教程</li>
                <li>数据分析与应用</li>
                <li>实战编辑</li>
                <li>快速编程入门</li>
            </ul>
            <ul class="tab-body-ul">
                <li>数据分析思维</li>
                <li>淘宝天猫</li>
                <li>淘宝天猫</li>
                <li>网络营销文案</li>
            </ul>
        </div>
    </div>
</body>
</html>

 

标签:body,head,Tab,solid,JavaScript,切换,tab,border
From: https://www.cnblogs.com/lixianhui/p/18120046

相关文章

  • 2-42. 场景切换淡入淡出和动态 UI 显示
    添加Canvas添加FadePanel通过修改CanvasGroup的Alpha就能隐藏或者显示FadePanel在FadePanel下面添加文字和动画动画图片如下图所示切换场景时淡入淡出修改Settings修改Player解决摄像机抖动问题修改Bounds范围项目相关代码代码仓库:https:/......
  • 2-39. 创建 TransitionManager 控制人物场景切换
    上节课最终画好的场景BuildSettings添加场景PersistentScene添加TransitionManager记得添加命名空间注册场景切换的事件添加传送点实现传送修改EventHandler项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240407_1934......
  • Liunx中禁止普通用户切换root的解决方法
    相关文章:OpenEuler操作系统创建普通用户切换root用户报错-CSDN博客Liunx中用户与用户组详解-CSDN博客应用场景:    通过限制普通用户访问root用户的能力,你可以防止用户误操作,或者防止如果用户的账户被攻击或病毒感染时对系统造成的全面破坏。对于限制爆破root密码的......
  • Stable Diffusion带你探索AI绘图新世界,轻松实现自动化创作!
    StableDiffusion的介绍前言有一款AI突破生成软件,它是一款开源的AI图像生成器,不仅可以根据用户输入的文本自动生成,而且还能够达到高质量、高分辨率。而这款软件就是StableDiffusion。今天我们来讲一下StableFiffusion这款AI绘图软件。介绍StableDiffusionStableD......
  • 将libc database下载到本地
    将libcdatabase下载到本地  这个是libc-database的网站,可以在线查找libc。libc-database  本文对自己下载使用libcdatabase做一个记录,详情请查看libcdatabase的官方文档:https://github.com/niklasb/libc-database下载  这个无需安装,从官方的github下载zip,放到liunx......
  • 如何在JavaScript中解析S表达式
    S表达式是Lisp编程语言家族的基础。在本文中,我将逐步向您展示如何创建一个简单的S表达式解析器。这可以作为Lisp解析器的基础。Lisp是实现最简单的语言之一,创建解析器是第一步。我们可以使用解析器生成器来完成这项任务,但自己编写解析器会更容易。我们将使用JavaScript。(本文内......
  • javascript 原生JS实现 fadeIn / fadeOut 方法
    js源码:Object.prototype.fadeIn=function(time,callback){varel=this;el.style.opacity=0;varst=setInterval(function(){el.style.opacity=parseFloat(el.style.opacity)+0.01;if(el.style.opacity>=1){clearInterval(st);if(callback!==......
  • 【Web应用技术基础】JavaScript(8)——案例:待办事项
    视频已发。截图如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document<......
  • 05-database
    05-Database源作者地址:https://github.com/bonfy/go-mega仅个人学习使用本章的主题是重中之重!大多数应用都需要持久化存储数据,并高效地执行的增删查改的操作,数据库为此而生。我们将第一次引入第三方库Gorm来帮助我们实现ORM本章的GitHub链接为:Source,Diff,Zip数据......
  • JavaScript中,...(三个点)是扩展运算符
    在JavaScript中,...(三个点)是扩展运算符(SpreadOperator)和剩余参数(RestParameters)的语法。它确实可以用来“展开”对象的属性或数组的元素。展开对象的属性对于对象,扩展运算符可以用来将一个对象的所有可枚举属性复制到新对象中,或者与现有的对象属性合并。javascript复制代码......