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

JavaScript实现乐透号码生成时新结果无法清空旧值如何解决

问题原因

  1. shownSelection被定义为全局变量,每次执行makeIt函数时都会在上次的字符串基础上拼接新内容,不会自动清空旧值,导致结果累加。
  2. <span id="results">是普通文本元素,没有value属性,你写的document.getElementById("results").value = ""属于无效操作,无法清空内容。
  3. 输入值不符合要求的分支没有加终止逻辑,即便弹出了告警,后续拼接旧值的代码还是会执行,进一步加重内容拼接问题。

修复方案

把两个存储临时数据的变量移到函数内部,每次执行函数都会重新初始化,同时补全非法输入的终止逻辑,删除对span的无效value操作,修正后的JS代码如下:

var buttons = document.getElementById("create");

function makeIt() {
  var numbers = [];
  var shownSelection = "";
  // 把输入值转成数字,避免字符串比较的异常问题
  var input = Number(document.getElementById("count").value);
  var resultsDiv = document.getElementById("results");

  if (input > 8) {
    alert("Too many numbers. Please try less than 8.");
    return;
  } else if (input < 1) {
    alert("Nothing to predict.");
    return;
  } else {
    for (var i = 0; i < input; i++) {
      numbers[i] = Math.ceil(Math.random() * 99);
    }
  }

  for (var i = 0; i < input; i++) {
    if (i == input - 1) {
      shownSelection += numbers[i];
    } else {
      shownSelection += numbers[i] + "-";
    }
  }

  resultsDiv.textContent = shownSelection;
};

额外优化建议

如果需要点击生成后清空输入框,可以在函数末尾加一行document.getElementById("count").value = ""即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:27:00