You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现第二次点击按钮时隐藏对应的label标签

实现方法

以下两种原生JavaScript方案都可以实现需求,无需引入任何第三方库。


方案1:通过元素自定义属性存储点击次数

这种方式的计数状态直接绑定在按钮元素上,调试时可以直接在元素属性中查看计数,非常方便:

<button id="btn">Button</button>
<label id="lbl">lbl</label>

<script>
const btn = document.getElementById('btn');
const lbl = document.getElementById('lbl');
// 初始化点击次数
btn.dataset.clickCount = 0;

btn.addEventListener('click', function() {
  const currentCount = Number(btn.dataset.clickCount) + 1;
  btn.dataset.clickCount = currentCount;
  
  if (currentCount === 2) {
    // 隐藏label,如需保留占位可替换为 lbl.style.visibility = 'hidden'
    lbl.style.display = 'none';
    // 达到目标后移除事件监听,避免无效执行
    btn.removeEventListener('click', arguments.callee);
  }
});
</script>

方案2:通过闭包存储点击次数

这种方式的计数变量不会暴露到全局作用域,不会产生全局变量污染:

<button id="btn">Button</button>
<label id="lbl">lbl</label>

<script>
const btn = document.getElementById('btn');
const lbl = document.getElementById('lbl');

btn.addEventListener('click', (() => {
  let clickCount = 0;
  return function() {
    clickCount++;
    if (clickCount === 2) {
      lbl.style.display = 'none';
    }
  }
})());
</script>

补充说明

如果需要实现点击偶数次隐藏、奇数次显示的切换效果,可以修改判断逻辑为:

if (clickCount % 2 === 0) {
  lbl.style.display = 'none';
} else {
  lbl.style.display = 'inline';
}

内容的提问来源于stack exchange,提问作者Sarvesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:48:01