我的JavaScript宽度增长动画无法运行,请求排查原因
问题分析与修复方案
你的代码核心问题是定时器的停止逻辑写反了,导致动画根本无法执行:
- 原代码中
if(diceWidth < 300)就清除定时器,但初始diceWidth是0,满足<300的条件,所以定时器刚启动就被关闭,完全没机会执行宽度增长的操作。 - 正确逻辑应该是:当
diceWidth >= 300时停止定时器,否则持续增加宽度并更新元素样式。
修正后的代码如下:
const pr_btn = document.getElementById("Pr_btn"); pr_btn.addEventListener("click", VtnDice); function VtnDice() { let interv = null; const dice = document.getElementById("dice"); let diceWidth = 0; clearInterval(interv); interv = setInterval(frame, 5); function frame() { if (diceWidth >= 300) { // 条件改为达到300px时停止 clearInterval(interv); } else { diceWidth++; dice.style.width = diceWidth + "px"; } } }
另外补充两点注意事项:
- 确保
#dice元素有初始基础样式(比如height、background-color),否则宽度变化可能肉眼无法察觉 - 当前代码的
diceWidth=0和clearInterval逻辑,能保证每次点击按钮都从0开始重新触发动画,无需额外修改
内容的提问来源于stack exchange,提问作者Taba
相关产品推荐
相关产品推荐

