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

修改JS成绩录入脚本:首次输入-999时显示未录入成绩提示

问题根源

现有代码的逻辑漏洞是:就算你首次输入-999时在循环内给页面元素赋值了提示文本,循环结束后渲染总分、平均分的代码会强制覆盖该元素的内容,导致提示永远显示不出来。

修复方法

只需在识别到空录入场景时直接终止函数,避免后续代码覆盖提示内容即可,修改后的完整代码如下:

<script>
function userInput() {
  let examScores = 0;
  let totScores = 0;
  const scores = [];

  while (true) {
    examScores = parseInt(prompt("请输入成绩,结束录入请输入-999:"));
    if (examScores === -999) {
      if (scores.length === 0) {
        document.getElementById("scores").textContent = "No score entered.";
        // 直接终止整个函数,不执行后面的渲染逻辑
        return;
      }
      break;
    }
    // 额外兼容非数字输入的场景,避免存入无效值
    if (!isNaN(examScores)) {
      scores.push(examScores);
    }
  }

  // 计算总分
  for (let i = 0; i < scores.length; i++) {
    totScores += scores[i];
  }
  // 渲染计算结果
  document.getElementById("scores").innerHTML = `<h1>成绩总和为:${totScores.toFixed(2)}<br/>平均分为:${(totScores/scores.length).toFixed(2)}</h1>`;
}
</script>

<h1>考试成绩计算</h1>
<h3>点击按钮开始录入成绩</h3>
<input type="button" value="录入学生成绩" onclick="userInput()" />
<div id="scores"></div>

如果你需要将提示改成中文,把No score entered.替换为未录入任何成绩即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:45:03