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

HTML/JS基础答题游戏:单选按钮计分器分数无法累加求助

问题分析与解决方案

你遇到的核心问题有两个:

  • 分数变量被重复初始化:taskai变量定义在ivertinimas()函数内部,每次调用这个函数时,taskai都会被重新设置为0,就算答对加1,函数执行完后这个变量就被销毁了,下次调用又回到初始值0,自然无法累加分数。
  • 表单提交会刷新页面:默认情况下,表单提交会触发页面刷新,这会重置所有JavaScript变量,就算解决了第一个问题,刷新后分数还是会回到0。

修复步骤

  1. 把分数变量移到函数外部:将taskai定义在全局作用域(这里采用全局变量的简单方案,也可以用闭包封装),这样每次调用函数时都会基于之前的分数进行累加。
  2. 阻止表单默认提交行为:在ivertinimas()函数中添加逻辑阻止表单提交的默认动作,避免页面刷新。
  3. 调整分数更新逻辑:确保每次答题后都能正确更新页面上的分数显示。

完整修复代码

<div> 
  <h1 id="title">Klausimų žaidimas</h1> 
  <h3>Už kiekveiną teisingą atsakymą duodamas vienas taškas.</h3> 
  <h3 id="rezultatas">Rezultatas: 0</h3> 
  <h4>Koks yra antras pagal aukštį kalnas pasaulyje?</h4> 
  <form id="klausimai" onsubmit="return ivertinimas()"> 
    <input type="radio" name="kalnas" value="everestas">Everestas<br> 
    <input type="radio" name="kalnas" value="k2">K2<br> 
    <input type="radio" name="kalnas" value="leipkalnis">Liepkalnis<br> 
    <input type="submit" value="Pateikti atsakymą"> 
  </form> 
</div>

<script>
// 将分数变量放在全局作用域,避免每次调用函数都重置
var taskai = 0;

function ivertinimas() { 
  var radios = document.getElementsByName("kalnas"); 
  var answered = false; // 标记是否有选中的选项
  
  for (var i = 0; i < radios.length; i++) { 
    if (radios[i].checked) { 
      answered = true;
      var ats = radios[i].value; 
      if (ats === "k2") { 
        alert("Atsakymas teisingas!"); 
        taskai++; 
      } else { 
        alert("Atsakymas neteisingas. Teisingas atsakymas yra K2.") 
      } 
      break; 
    } 
  }

  // 更新页面上的分数显示
  var suTaskai = "Rezultatas: " + taskai; 
  document.getElementById("rezultatas").innerHTML = suTaskai; 

  // 如果用户没选选项,提示并阻止提交
  if (!answered) {
    alert("Pasirinkite atsakymą!");
  }

  // 阻止表单默认提交行为,避免页面刷新
  return false;
} 
</script>

关键修改说明

  • 把var taskai = 0;移到了函数外面,成为全局变量,这样每次答对时taskai++会持续累加分数。
  • 表单的onsubmit改成了return ivertinimas(),函数最后返回false,阻止了页面刷新导致的变量重置。
  • 初始化页面时,rezultatas元素默认显示Rezultatas: 0,让用户一开始就能看到分数状态。
  • 添加了answered变量,处理用户未选择选项就提交的情况,给出友好提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:20:05