簡體   English   中英

如何防止JS中多次調用function

[英]How to prevent multiple function call in JS

我是 JS 新手,我需要單擊一次執行我的 function,第一次單擊之后的所有其他單擊都將被忽略。

 let count = 0; function func() { if (count == 0) { console.log("First Click"); let count = 1; } else { console.log("No first Click"); } }
 <button onclick="func()">Func</button>

(不工作)

刪除 let 關鍵字

嘗試這個:

<script>
  count = 0;

function func() {
  if (count == 0) {
    alert("first");
    console.log("First Click");
     count = 1;
  } else {
    alert("no first");
    console.log("No first Click");
  }
}
</script>

https://jsbin.com/toroyiropa/edit?html,output

像這樣的東西應該工作:

<button onclick="func()">Func</button>
<script>
  let count = 0;

  function func() {
    if (count == 0) {
      console.log("First Click");
      count = 1;
    } else {
      console.log("No first Click");
    }
  }
</script>

說明:這里的 count 是一個全局變量,您需要將其值更改為與比較器不同的值,即(count == 0)。

我會建議你做這樣的事情:

<button onclick="func()">Func</button>
<script>
   var enabled = true;

   function func() {
      if (enabled) {
         console.log("Do something");
         enabled = false;
      }
   }
</script>

要在上下文中使用持久變量,您只需將變量從 let 更改為 var。 這個解決方案應該可以工作,而且可能更干凈一些,因為我認為您可能不需要使用計數器來檢查您是否已經執行了 function,這是一項額外的工作。

要讓計數變量在每個 function 調用中保持不變,最好的方法是使用閉包。

<button onclick="func()">Func</button>

<script>

  var clickTrack = (function() {
    var count = 0;
    return function() {
        if (count == 0) 
            console.log("First Click");
      else
            console.log("No first click");
      count++;
        return;
     }
   })();

  function func() {
        clickTrack();

  }

 </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM