如何使用 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+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告