JavaScript实现选项卡功能(面向过程与面向对象)

JavasScript实现选项卡功能有两种常用的方法,一种是面向过程的方式,另一种是面向对象的方式。下面我将详细讲解这两种方法的实现步骤和代码示例:

面向过程的实现方式

实现步骤

  1. 获取选项卡的容器和对应选项卡所显示内容的容器
  2. 遍历选项卡容器中的选项卡,为每个选项卡绑定点击事件处理函数
  3. 在点击事件处理函数中,移除容器中的所有选项卡选中状态,并将当前点击的选项卡设置为选中状态
  4. 同时,也移除内容容器中所有选项卡内容的显示状态,并将当前点击的选项卡对应的内容设置为显示状态

示例代码

<div class="tabs-container">
  <div class="tab active">选项卡1</div>
  <div class="tab">选项卡2</div>
  <div class="tab">选项卡3</div>
</div>
<div class="tab-contents">
  <div class="tab-content active">选项卡1的内容</div>
  <div class="tab-content">选项卡2的内容</div>
  <div class="tab-content">选项卡3的内容</div>
</div>

<script>
const tabsContainer = document.querySelector('.tabs-container');
const tabContents = document.querySelector('.tab-contents');
const tabs = tabsContainer.children;
const contents = tabContents.children;

for (let i = 0; i < tabs.length; i++) {
  tabs[i].addEventListener('click', function() {
    for (let j = 0; j < tabs.length; j++) {
      tabs[j].classList.remove('active');
      contents[j].classList.remove('active');
    }
    tabs[i].classList.add('active');
    contents[i].classList.add('active');
  });
}
</script>

面向对象的实现方式

实现步骤

  1. 创建一个选项卡类,包含选项卡元素和对应的内容元素
  2. 为选项卡类添加切换选项卡和对应内容的方法
  3. 创建多个选项卡实例
  4. 调用实例中的切换选项卡和对应内容的方法

示例代码

<div class="tabs-container">
  <div class="tab active">选项卡1</div>
  <div class="tab">选项卡2</div>
  <div class="tab">选项卡3</div>
</div>
<div class="tab-contents">
  <div class="tab-content active">选项卡1的内容</div>
  <div class="tab-content">选项卡2的内容</div>
  <div class="tab-content">选项卡3的内容</div>
</div>

<script>
class Tab {
  constructor(tab, content) {
    this.tab = tab;
    this.content = content;
    this.tab.addEventListener('click', this.toggle.bind(this));
  }

  toggle() {
    const tabs = this.tab.parentElement.children;
    const contents = this.content.parentElement.children;
    for (let i = 0; i < tabs.length; i++) {
      tabs[i].classList.remove('active');
      contents[i].classList.remove('active');
    }
    this.tab.classList.add('active');
    this.content.classList.add('active');
  }
}

const tabs = document.querySelectorAll('.tabs-container .tab');
const contents = document.querySelectorAll('.tab-contents .tab-content');
const tabInstances = [];

for (let i = 0; i < tabs.length; i++) {
  tabInstances.push(new Tab(tabs[i], contents[i]));
}
</script>

以上就是JavaScript实现选项卡功能的完整攻略,通过这种方式可以实现多个选项卡的动态切换。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现选项卡功能(面向过程与面向对象) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js实现移动端轮播图滑动切换

    下面是实现移动端轮播图滑动切换的完整攻略: 一、创建HTML结构 首先需要在HTML文件中创建好轮播图的结构,一般是使用<ul>和<li>标签来实现。每张轮播图使用一项<li>,其中应该包含图片和对应的说明文字,例如: <div id="slider"> <ul class=&quot…

    JavaScript 2023年6月11日
    00
  • HTML5 本地存储之如果没有数据库究竟会怎样

    这里是 “HTML5 本地存储之如果没有数据库究竟会怎样” 的攻略。 什么是本地存储 本地存储是Web开发中比较重要的一个概念,它可以在不使用服务器数据库的情况下,让我们的Web应用程序缓存数据。HTML5 中的本地存储提供了两种方式:localStorage 和 sessionStorage。 localStorage 存储的数据是永久性的,而 sessi…

    JavaScript 2023年6月11日
    00
  • Javascript生成器(Generator)的介绍与使用

    Javascript生成器(Generator)的介绍与使用 简介 Javascript生成器是一种特殊类型的函数,它允许我们暂停函数的执行并返回一个中间结果,稍后再继续执行并返回更多的中间结果。在实际应用中,生成器通常用于处理大量数据或者生成一系列的异步任务。 定义 我们可以使用函数声明或函数表达式来定义一个生成器。当定义一个生成器时,我们需要在函数名后面…

    JavaScript 2023年5月27日
    00
  • 文件预览PDF.js使用技巧示例总结

    文件预览PDF.js使用技巧示例总结 简介 PDF.js是一个用于在Web平台上显示PDF文档的JavaScript库,其使用Canvas技术实现渲染,使得Web端的PDF浏览成为可能。本文将简要介绍PDF.js的使用技巧,并提供两个示例说明。 安装PDF.js 从GitHub上下载PDF.js源代码,并解压到本地目录 在HTML文件中添加以下标签,引入库文…

    JavaScript 2023年5月27日
    00
  • js 函数性能比较方法

    当面临选择不同实现方式时,我们必须评估其可能影响到代码性能的部分。在 JavaScript 中函数的性能是由多种因素决定的。接下来将会介绍两种比较 JS 函数性能的方法。 1. 使用性能测试工具 我们可以使用性能测试工具,如 jsbenchmark 或者 jsperf,直接进行性能测试。这些测试工具提供了一些常见的测试用例,我们可以根据自己的需要编写自己的测…

    JavaScript 2023年5月27日
    00
  • React 组件中的 bind(this)示例代码

    针对React组件中的bind(this)代码示例,以下是完整攻略: 什么是bind(this) bind(this)是JavaScript ES5中引入的方法,用于显式地指定函数中this关键字的指向。 在React组件中,使用bind(this)是为了确保在组件更新或者父组件通过props传递了函数后,组件内部调用该函数this指向正确,不会出现this…

    JavaScript 2023年6月11日
    00
  • 纯js模仿windows系统日历

    下面是详细的“纯js模仿windows系统日历”的攻略。 确定需求 在开始实现之前,我们需要明确我们要实现的功能和样式。通过分析windows系统日历,我们需要实现以下功能:展示年、月、日;选择日期;展示节日;展示农历等。 确定技术栈 由于需要实现前端交互和展示,我们可以选用纯js实现,同时可以使用第三方库例如moment.js或day.js来处理日期以及节…

    JavaScript 2023年5月27日
    00
  • vue使用prop可以渲染但是打印台报错的解决方式

    在Vue中,组件间的数据传递是通过props进行的。然而,有时候我们会在控制台看到如下的错误信息: [Vue warn]: Invalid prop: type check failed for prop “xxx”. Expected xxx, got xxx. 这个错误信息通常是由于在传递过程中,子组件收到的props数据类型与它预期的不符,或者缺少必要…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部