-1

我是 JS 新手,我需要在 1 次单击中执行我的函数,而第一次单击之后的所有其他单击都将被忽略。

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>

(不工作)

4

5 回答 5

2

我会建议你做这样的事情:

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

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

要在上下文中使用持久变量,您只需将变量从 let 更改为 var。该解决方案应该可以工作,并且可能会更干净一些,因为我认为您可能不需要使用计数器来检查您是否已经执行了该功能,这是一项额外的工作。

于 2019-10-18T05:42:03.577 回答
2

删除 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,输出

于 2019-10-18T05:52:15.563 回答
0

要让 count 变量在每个函数调用中保持不变,最好的方法是使用闭包。

<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>
于 2019-10-18T05:56:00.633 回答
0

像这样的东西应该工作:

<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)。

于 2019-10-18T05:37:18.607 回答
0

我知道这是一个有答案的老问题,但我想我会发布我的答案,因为它还允许重新启用该功能。

对于上下文,这是为了在地图周围跟随传单 js 标记而创建的,我只希望它一次捕捉到 1 个标记。

var focusenabled = true;
interval = null;

function focus(e) {
  if (focusenabled) {
    var i = 0;
    interval = setInterval(function () {
      mymap.setView(e.target.getLatLng());
      console.log("focus active");
    }, 2000);
    focusenabled = false;
    alert("Follow Enabled");
    console.log("Cannot follow others while following this one");
  } else {
  clearInterval(interval);
  alert("Follow Disabled");
  focusenabled = true;
  console.log("Can follow now if you want");
  }
};
于 2021-09-11T00:11:39.493 回答