首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使onclick函数只执行一次?

如何使onclick函数只执行一次?
EN

Stack Overflow用户
提问于 2019-08-24 21:07:17
回答 6查看 16K关注 0票数 21

我在一个按钮上有这个谷歌分析代码。我只需要执行一次,这样用户就不能通过多次按下按钮来更改统计信息。我尝试过类似主题的解决方案,但它们不起作用。请帮帮忙。这是我的密码。

代码语言:javascript
复制
<script>
    function klikaj(i) {
        gtag('event', 'first-4', {
            'event_category' : 'cat-4',
            'event_label' : 'site'
        });
    }

    document.body.addEventListener("click", klikaj(i), {once:true})
</script>


<div id="thumb0" class="thumbs" onclick="klikaj('rad1')">My button</div>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-08-24 21:17:27

您可以像这样使用removeAttribute()document.getElementById('thumb0').removeAttribute("onclick");

也可以让函数返回false,如下所示:document.getElementById('thumb0').onclick = ()=> false

票数 10
EN

Stack Overflow用户

发布于 2019-08-24 21:13:39

删除按钮上的onclick属性,并通过JavaScript注册监听器,就像您试图做的那样:

代码语言:javascript
复制
<div id="thumb0" class="thumbs"
  style="border: 1px solid; cursor: pointer; float: left">
    My button
</div>
<script>
    function klikaj(i) {
        console.log(i);
    }
    document.getElementById('thumb0')
        .addEventListener("click", function(event) {
            klikaj('rad1');
        }, {once: true});
</script>

如果浏览器不支持{ once: true }选项,则可以手动删除事件侦听器:

代码语言:javascript
复制
<div id="thumb0" class="thumbs"
  style="border: 1px solid;cursor: pointer;float:left">
    My button
</div>

<script>
    function klikaj(i) {
        console.log(i);
    }
    function onClick(event) {
      klikaj('rad1');
      document
        .getElementById('thumb0')
        .removeEventListener("click", onClick);
    }
    
    document
      .getElementById('thumb0')
      .addEventListener("click", onClick);
</script>

票数 13
EN

Stack Overflow用户

发布于 2019-08-24 21:10:44

我建议设置一个变量并检查它的值。

代码语言:javascript
复制
<script>
    var clicked = false;
    function klikaj(i) {
        if (clicked === false) {
            gtag('event', 'first-4', {
                'event_category' : 'cat-4',
                'event_label' : 'site'
            });
        }
        clicked = true;
    }
    ...
</script>

或删除其他人建议的onclick事件,

代码语言:javascript
复制
<script>
    function klikaj(i) {
        gtag('event', 'first-4', {
            'event_category' : 'cat-4',
            'event_label' : 'site'
        });
        document.getElementById('thumb0).onclick = undefined;
    }
    ...
</script>

请注意,在IE和边缘中不幸地不支持once: true。请参阅https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57641554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档