修改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
相关产品推荐
相关产品推荐

