javascript 闭包函数做显隐内容

下面是详细讲解“JavaScript闭包函数做显隐内容”的完整攻略。

什么是JavaScript闭包函数

JavaScript闭包函数是指内部函数可以访问外部函数的变量,即使外部函数已经执行完毕。这是由于内部函数形成了一个闭包环境,保持了对其父级作用域的引用。通过此特性,闭包函数经常被用来保护私有变量并创建模块化结构。

如何通过闭包函数来做显隐内容

通过闭包函数,我们可以创建一个简单的代码段来让内容交替显示和隐藏。

下面是一个示例代码:

<button id="btn">点击我显示/隐藏内容</button>
<div id="content" style="display:none">这是要被显示或隐藏的内容</div>

<script>
  var btn = document.getElementById("btn");
  var content = document.getElementById("content");

  // 使用立即调用函数表达式(IIFE)创建闭包
  (function() {
    var isShown = false; // 初始状态为隐藏

    // 定义一个闭包函数来显示或隐藏内容
    function toggleContent() {
      if (!isShown) {
        content.style.display = "block";
        isShown = true;
      } else {
        content.style.display = "none";
        isShown = false;
      }
    }

    // 给按钮添加点击事件监听器
    btn.addEventListener("click", toggleContent);
  })();
</script>

在这个示例中,我们创建了一个立即调用函数表达式(IIFE),它定义了一个名为 toggleContent 的内部函数。该函数通过 isShown 变量来确定当前显示/隐藏状态,并在内容上切换显示样式。

我们也将内部函数添加为按钮的点击事件监听器,这样每次点击按钮时,都会触发 toggleContent 函数。这个函数通过闭包环境保持了对 isShown 变量的引用,因此可以正常工作。

另一个示例

当然,还有很多其他的实现方式。下面是另一个示例,这次我们将闭包函数封装在一个名为 makeToggleable 的函数中。该函数将返回一个可以切换显示/隐藏状态的函数,并保护了 isShown 变量,让它不会被意外修改。

<button id="btn">点击我显示/隐藏内容</button>
<div id="content" style="display:none">这是要被显示或隐藏的内容</div>

<script>
  var btn = document.getElementById("btn");
  var content = document.getElementById("content");

  // 定义一个函数来创建闭包
  function makeToggleable(element) {
    var isShown = false; // 初始状态为隐藏

    // 定义一个闭包函数来显示或隐藏内容
    function toggleContent() {
      if (!isShown) {
        element.style.display = "block";
        isShown = true;
      } else {
        element.style.display = "none";
        isShown = false;
      }
    }

    // 返回一个可以切换显示/隐藏状态的函数
    return toggleContent;
  }

  // 通过 makeToggleable 函数创建一个切换显示状态的函数
  var toggleContent = makeToggleable(content);

  // 给按钮添加点击事件监听器
  btn.addEventListener("click", toggleContent);
</script>

在这个示例中,我们把生成闭包函数的逻辑封装在了一个名叫 makeToggleable 的函数中。这个函数接受一个要显示/隐藏的 DOM 元素作为参数,并返回一个闭包函数来切换该元素的显示状态。每次调用 makeToggleable 函数都会创建一个新的闭包环境,保护其自己的 isShown 变量,所以可以创建多个切换显示状态的函数,并互不干扰。

总结

通过上述示例,我们可以知道如何使用JavaScript闭包函数来切换内容的显示和隐藏。从这些示例中可以看出,闭包函数能够保护变量不被意外修改,从而实现模块化设计。在实际开发中,我们可以根据需要使用不同的实现方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 闭包函数做显隐内容 - Python技术站

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

相关文章

  • 我做了一个 VSCode 插件版的 ChatGPT

    大家好,我是风筝 其实很早之前就想学学 VSCode 插件开发了,但是又不知道做什么,加上我这半吊子前端水平,迟迟没有动手。 最近 ChatGPT 火的一塌糊涂,我也一直在用,真的非常好用,有些问题之前需要 Google 搜索,现在用 ChatGPT 基本上都能直接解决,效率提升了不少。 但是吧,浏览器和 IDE 来回切换又很麻烦,所以我灵机一动,那就开发个…

    JavaScript 2023年5月11日
    00
  • JavaScript中的纯函数与偏函数你了解吗

    JavaScript中的纯函数和偏函数是两个非常重要的概念。它们都可以提高代码的可读性、可维护性和可测试性。下面我们来详细讲解一下这两个概念。 纯函数 纯函数是指不依赖于外部状态(如全局变量、文件等)并且给定相同的输入,总是返回相同的输出的函数。简而言之,纯函数不会影响外界,也不受外界影响。纯函数具有以下优点: 可以更加方便的进行测试,因为不需要考虑外部状态…

    JavaScript 2023年5月27日
    00
  • JS实现使用POST方式发送请求

    JS实现使用POST方式发送请求的步骤如下: 创建一个XMLHttpRequest对象 在发送POST请求之前,需要先创建一个XMLHttpRequest对象。可以使用以下代码创建: let xhr = new XMLHttpRequest(); 设置请求的处理函数 在发送实际的请求之前,需要先设置请求的处理函数。这些函数在请求的不同阶段会被自动调用。可以使…

    JavaScript 2023年5月27日
    00
  • JavaScript实现简单计时器

    当需要实现一个简单的计时器时,我们可以使用JavaScript来实现。下面是实现一个简单计时器的步骤和代码示例: 步骤一:创建HTML文件 首先,我们需要创建一个HTML文件,其中包含一个计时器及其按钮。代码如下: <!DOCTYPE html> <html> <head> <title>JavaScript计…

    JavaScript 2023年5月27日
    00
  • js获取事件源及触发该事件的对象

    获取事件源对象和触发该事件的对象是 Javascript 事件处理的重要操作。下面,我将为大家分享完整的攻略。 获取事件源对象 事件源对象指的是触发该事件的元素或节点。通常,我们使用 event.target、event.srcElement 等属性来获取事件源对象。 event.target:事件发生时,事件的目标节点(最深嵌套的节点)。 event.sr…

    JavaScript 2023年6月10日
    00
  • JS实现按钮控制计时开始和停止功能

    让我详细讲解“JS实现按钮控制计时开始和停止功能”的完整攻略: 1. 准备工作 首先,我们需要在HTML中创建两个按钮,一个用于开始计时,一个用于停止计时。按钮的点击事件可以直接在HTML中定义或者在JavaScript中动态绑定。 <button id="start-btn">开始计时</button> <…

    JavaScript 2023年6月10日
    00
  • Ajax实现搜索引擎自动补全功能

    实现搜索引擎自动补全功能的一种方式是通过Ajax技术来异步获取匹配结果,并动态更新在页面上。 以下是具体步骤: 1. 构建搜索表单 构建一个包含搜索框的表单,需要设置一个 input 元素的 id 为 search,表示搜索输入框。 <form> <input type="text" id="search&qu…

    JavaScript 2023年6月11日
    00
  • JS浏览器BOM常见操作实例详解

    JS浏览器BOM常见操作实例详解 JS浏览器BOM(Browser Object Model)是指浏览器对象模型,它提供了与浏览器窗口进行交互的API。BOM包含了window、navigator、document等对象,这些对象是直接映射到浏览器窗口的,可以通过JS编程来操作浏览器窗口。本文将详细讲解JS浏览器BOM常见操作实例,包括获取浏览器窗口尺寸、打…

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