如何使用 JavaScript 统计按钮点击次数?


跟踪按钮点击是 JavaScript 中一项常见的任务,可以通过使用 addEventListener() 方法来实现。通过向按钮元素添加一个事件处理程序方法,并在每次按下按钮时递增一个变量,我们可以简单地跟踪按钮点击次数。我们可以通过在网页上显示这些信息并将点击次数保存在 localStorage 中,快速向用户显示已经点击了多少次。我们甚至可以在用户关闭浏览器后保存点击次数。

假设我们正在构建一个简单的计算器,那么我们将需要可以执行加法、减法、乘法、除法、等于等功能的按钮。因此,在网页上包含按钮是使其更具交互性的方法之一。在本博文中,我们将主要了解如何设计一个按钮,并使其可点击并计算用户点击的次数。

创建基本按钮

在开始跟踪按钮点击之前,我们必须首先在网页上添加一个按钮元素。<button> HTML 元素是在网页上创建按钮的最简单方法。

示例

<!DOCTYPE html>
<html>
<body>
   <button id="myButton">Click Me</button>
</body>
</html>

这将创建一个带有“点击我”文本和“myButton” ID 的按钮。稍后我们将使用此 ID 在 JavaScript 代码中引用该按钮。

使用 JavaScript 跟踪按钮点击

方法 1:addEventListener()

有多种 JavaScript 方法可以监视按钮点击,但当今最常用的方法是使用 addEventListener() 方法。addEventListener() 函数是 JavaScript 的内置函数,它向元素添加一个事件处理程序函数,当发生特定事件(例如,点击按钮、悬停任何元素、元素进入或元素离开)时,此事件处理程序就会运行。在我们的情况下,我们希望将一个事件处理程序函数与按钮元素关联,当点击按钮时,该函数将被执行。

示例

以下是如何使用 addEventListener() 方法跟踪按钮点击的示例:

<!DOCTYPE html>
<html>
<body>
   <button id="myButton">Click Me</button>
   <p id="count"></p>
   <script>
      var count = 0;
      var button = document.getElementById("myButton");
      var countDisplay = document.getElementById("count");
      button.addEventListener("click", function() {
         count++;
         countDisplay.innerHTML = count;
      });
   </script>
</body>
</html>

首先,使用 getElementById() 方法选择 ID 为“myButton”的按钮元素。然后我们将初始化变量 clickCount 并将其值设置为零。此 clickCount 变量用于存储和显示按钮被点击的次数。

然后,按钮元素通过 addEventListener() 函数接收事件处理程序代码。addEventListener() 方法的第一个输入指定要侦听的事件类型(在本例中为 click)。第二个参数指示在按下按钮时要执行的函数。

在事件处理程序方法中递增 ClickCount 变量,并将 ClickCount 的当前值记录到屏幕上。这允许您确定按钮点击的频率。

方法 2:onclick()

此方法使用 onclick 属性将事件处理程序附加到按钮元素。每次点击按钮时,事件处理程序函数都会递增一个计数器变量。

示例

以下是 onclick 属性的示例代码

<!DOCTYPE html>
<html>
<body>
   <button id="myButton">Click Me</button>
   <p id="result"></p>
   <script>
      var count = 0;
      var button = document.getElementById("myButton");
      var result = document.getElementById("result");
      button.onclick = function() {
         count++;
         result.innerHTML = count;
      }
   </script>
</body>
</html>

方法 3:使用 Bind 方法

此方法使用 bind 方法将事件侦听器附加到按钮元素,并将当前计数值绑定到函数。

示例

<!DOCTYPE html>
<html>
<body>
   <button id="myButton">Click Me</button>
   <p id="count"></p>
   <script>
      var count = 0;
      var button = document.getElementById("myButton");
      var countDisplay = document.getElementById("count");
      button.addEventListener("click", (function(count) {
         return function() {
            count++;
            countDisplay.innerHTML = count;
         }
      })(count));
   </script>
</body>
</html>

方法 4:使用闭包

闭包是一个可以访问父函数作用域中变量的函数,即使父函数已经返回。通过使用闭包,您可以以全局作用域无法访问的方式维护对计数变量的跟踪。

示例

<!DOCTYPE html>
<html>
<body>
   <button id="myButton">Click Me</button>
   <p id="count"></p>
   <script>
      function createCounter() {
         let count = 0;
         return function() {
            count++;
            return count;
         }
      }
      const counter = createCounter();
      const button = document.getElementById("myButton");
      const countDisplay = document.getElementById("count");
      button.addEventListener("click", () => {
         countDisplay.innerHTML = counter();
      });
   </script>
</body>
</html>

方法 5:将点击次数存储在本地存储中

虽然在网页上显示点击次数很有用,但这并不是一个长期解决方案。每当用户刷新页面或关闭浏览器时,点击次数就会丢失。我们可以利用 localStorage 对象将点击次数保存在用户的浏览器中,以便即使在用户关闭浏览器后也能保存点击次数。

示例

以下是如何使用 localStorage 保存点击次数的示例:

<!DOCTYPE html>
<html>
<body>
   <button id="my-button">Click Me</button>
   <div id="click-count">Button clicked: 0 times</div>
   <script>
      let button = document.getElementById("my-button");
      let clickCount = 0;
      let display = document.getElementById("click-count");
      if (localStorage.getItem("clickCount")) {
         clickCount = parseInt(localStorage.getItem("clickCount"));
      }
      button.addEventListener("click", function() {
         clickCount++;
         display.innerHTML = "Button clicked: " +  clickCount + " times";
         localStorage.setItem("clickCount", clickCount);
      });
   </script>
</body>
</html> 

首先,我们检查 localStorage 中是否在“clickCount”下存储了值。如果 localStorage 中存储了值,则将其解析为整数,然后将其分配给 clickCount 变量。

接下来,在事件侦听器函数中添加另一行,以使用 setItem() 方法将 clickCount 变量的当前值保存到 localStorage。这样,即使用户刷新页面或关闭浏览器,点击次数也会被保存,并在下次访问网站时检索。

需要注意的是,localStorage 对象的存储限制约为 5-10MB,具体取决于浏览器。此外,localStorage 对象将数据存储为字符串,因此在获取值时需要将数字转换为字符串并重新解析为数字。

更新于:2023 年 2 月 21 日

16K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告