如何修复HTML游戏中JS hover仅触发一次alert的失效问题?
问题修复方案
错误原因
你代码里的核心问题是函数内部重新声明了同名变量:函数内的let hover1 = 1;会在函数作用域中创建一个新的局部变量,覆盖了全局的hover1。执行if (hover1 === 0)时,局部的hover1还未初始化(处于暂时性死区),值为undefined,不等于0,所以alert完全不会触发;即使触发,修改的也是局部变量,全局变量不会变化,也达不到仅触发一次的需求。
修复代码
JavaScript 部分
let hover1 = 0; function hoverAlert() { if (hover1 === 0) { alert('Test Alert'); hover1 = 1; // 直接修改全局变量,不再重新声明 } }
HTML 绑定示例
确保你的链接正确绑定了鼠标悬停事件:
<a href="#" onmouseover="hoverAlert()">悬停触发测试</a>
效果说明
- 第一次鼠标悬停链接时,
hover1为0,触发alert,随后hover1被设为1; - 再次悬停链接时,
hover1为1,不会触发alert; - 刷新页面后,
hover1重置为0,可再次触发alert。
内容的提问来源于stack exchange,提问作者PSBYLucas
相关产品推荐
相关产品推荐

