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

点击不同按钮时如何让同一个DIV重复淡入以提示数据更新

问题根源

首次点击后div的opacity属性已经被设为1,后续点击时没有属性值的变化,无法触发transition过渡动画,也没有先重置透明度为0的逻辑,自然只有第一次能看到淡入效果。

修复代码

只需要修改JS逻辑,先重置透明度,等待浏览器重绘完成后再更新内容并触发淡入即可,原有CSS和HTML无需改动:

function showMe(n){          
  const myDiv = document.getElementById('myDiv');
  // 先置为透明,触发消失效果
  myDiv.style.opacity = '0';
  // 两层requestAnimationFrame确保浏览器完成重绘,不会合并两次opacity修改
  requestAnimationFrame(() => {
    requestAnimationFrame(() => {
      myDiv.innerHTML = n === 1 ? "Hello Data" : "Another Data";
      myDiv.style.opacity = '1';
    })
  })
}

如果你希望等待div完全消失后再更新内容,可以改用transitionend事件监听,效果更丝滑:

function showMe(n){          
  const myDiv = document.getElementById('myDiv');
  // 先清空之前的绑定,避免重复触发
  myDiv.removeEventListener('transitionend', updateContent);
  myDiv.style.opacity = '0';

  function updateContent() {
    myDiv.innerHTML = n === 1 ? "Hello Data" : "Another Data";
    myDiv.style.opacity = '1';
    myDiv.removeEventListener('transitionend', updateContent);
  }

  myDiv.addEventListener('transitionend', updateContent);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:48:03