javascript - 为什么这个简单的 javascript 函数不能完成它应该做的事情?

标签 javascript html function

我正在尝试编写一个函数,使一串随机数在 html

元素中依次出现。请参阅下面的函数:

document.getElementById("button-1").onclick = function () {
  var numbersArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var newNumbersArray = [];

  function createNewArray (array) {
    for (i=0;i<50;i++) {
      array.push(numbersArray[Math.floor(Math.random()*11)]);
    }
    return array;
  }

  for (j = 0; j < newNumbersArray.length; j++) {
    document.getElementById("number-display").innerHTML = newNumbersArray[j];
  }
}

该函数的第一部分采用数字 0-10 的数组,并创建一个长度为 50 个元素的新数组,该数组由变量 numberArray 中的随机数组成。然后该函数应该在 html 页面上一个接一个地显示每个数字(请注意,我知道这会发生得太快,以至于您只能看到最后一个数字。我计划稍后添加一个计时器,现在我只是想获得基本功能)。但是,当我单击 html 页面的按钮时,绝对没有任何反应。我错过了什么?

非常感谢您的帮助。我是一个新手(可能很明显)。

最佳答案

问题是你从未调用过createNewArray

document.getElementById("button-1").onclick = function () {
  var numbersArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var newNumbersArray;

  function createNewArray (array) {
    for (i=0;i<50;i++) {
      array.push(numbersArray[Math.floor(Math.random()*11)]);
    }
    return array;
  }
  
  // this is required
  newNumbersArray = createNewArray([]);

  for (j = 0; j < newNumbersArray.length; j++) {
    document.getElementById("number-display").innerHTML = newNumbersArray[j];
  }
}
<div id='number-display'></div>
<button id="button-1">Action</button>

关于javascript - 为什么这个简单的 javascript 函数不能完成它应该做的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909616/

相关文章:

javascript - < Facebook :registration onvalidate =""/> not working

javascript - 带参数的 Nodejs ORM2 回调

javascript - 解析 float 和按钮点击

javascript - 尝试将数据从 firebase 写入 header 元素时,无法设置 null 的属性 'innerText'

数学反符号函数?

javascript - 未捕获的类型错误 : . indexOf 不是函数

javascript - 在 Vue.js 中使用 $event 或通过 $parent 操作父级上的数据

Javascript popupWindow 并填写一些网络表单字段

javascript - 删除 HTML 中的部分标记

sql - PostgreSQL:ST_GeomFromText(未知)不存在