猜数字游戏中answer变量触发check()时意外重复赋值求助
问题原因
点击表单的submit按钮时,浏览器会触发表单默认提交行为,导致页面刷新。页面刷新后,<script>标签内的代码会重新执行,answer变量会被重新生成新的随机数,这就是之前的正确答案再次提交时无法匹配的核心原因。
修复方案
有两种简单的解决方式:
方式一:将提交按钮改为普通按钮
把原来的submit类型输入框改成button类型,点击时不会触发表单提交刷新页面:
<input type="button" onclick="check()" value="EEEE"/>
或者使用<button>标签实现:
<button onclick="check()">EEEE</button>
方式二:阻止表单的默认提交行为
修改check函数,添加阻止默认行为的逻辑,同时在onclick中传递事件对象:
- 调整按钮的
onclick属性:
<input type="submit" onclick="check(event)" value="EEEE"/>
- 更新
check函数:
function check(event){ event.preventDefault(); // 阻止表单默认提交动作,避免页面刷新 var guess = document.getElementById("guess").value; var guessInt = parseInt(guess); if (guessInt == answer) { alert("you got it!") // 可选:猜对后生成新答案并更新分数 answer = Math.floor(Math.random()*100); score++; document.getElementById("score").innerHTML = score; } else if (guessInt > answer) { alert("too high") } else if (guessInt < answer) { alert("too low") } }
注:原代码中score变量会随页面刷新重置,使用上述修复方式后页面不再刷新,score可保持累加,建议在猜对时同步更新分数显示。
内容的提问来源于stack exchange,提问作者Killercarrot102
相关产品推荐
相关产品推荐

