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

使用含for循环与条件语句的函数实现FizzBuzz时仅输出最后结果的问题

问题分析与修复

你的代码核心问题是每次循环都直接覆盖了<p>元素的内容,而非累加所有结果。循环从1到输入数字的过程中,每一轮都会用innerHTML = ...替换掉之前的内容,最终只会显示最后一个数字对应的结果。

修复方案

方法1:先拼接所有结果,再一次性渲染

先创建数组存储每一轮的结果,循环结束后再把完整内容渲染到页面,这种方式更高效(减少DOM操作次数):

<label for="num">Enter a number: </label>
<input type="number" id="num" name="num">
<button id="btn">Play</button>
<p id="result"></p>

<script>
  let btn = document.getElementById("btn");
  btn.addEventListener("click", fizzBuzz);

  function fizzBuzz() {
    let number = document.getElementById("num").value;
    let results = [];
    for (let i=1; i<=number; i++) {
       let appendString = "";
       if (i%3 === 0) {
        appendString += "Fizz";
       }
       if (i%5 === 0) {
        appendString += "Buzz";
       }
       results.push(appendString === "" ? i : appendString);
     }
     // 用换行符分隔每一项,也可以换成逗号或空格
     document.getElementById("result").innerHTML = results.join("<br>");
  }
</script>

方法2:循环中追加内容(简单直接)

如果不想用数组,也可以在循环里通过innerHTML += ...追加内容,但记得每次点击前清空旧结果:

<label for="num">Enter a number: </label>
<input type="number" id="num" name="num">
<button id="btn">Play</button>
<p id="result"></p>

<script>
  let btn = document.getElementById("btn");
  btn.addEventListener("click", fizzBuzz);

  function fizzBuzz() {
    let number = document.getElementById("num").value;
    // 清空之前的结果,避免多次点击叠加
    document.getElementById("result").innerHTML = "";
    for (let i=1; i<=number; i++) {
       let appendString = "";
       if (i%3 === 0) {
        appendString += "Fizz";
       }
       if (i%5 === 0) {
        appendString += "Buzz";
       }
       let currentResult = appendString === "" ? i : appendString;
       document.getElementById("result").innerHTML += currentResult + "<br>";
     }
  }
</script>

关键提示

  • 优先选方法1,DOM操作本身比较消耗性能,一次性渲染比多次修改DOM更高效。
  • 两种方法都能实现从1到目标数字的完整FizzBuzz结果展示,可根据习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:52:43