在某些情况下未填充数组

时间:2018-09-10 12:21:02

标签: javascript

我很难破解此脚本,希望能使用此脚本。

尝试执行一个倒数脚本,在该脚本中,我必须显示上一个倒数的新数字。

let oldN = 0;
let newN = 0;
let arr = [];

function runner() {
  arr = [];
  newN = document.getElementById('newVar').value;

  console.log("stored: " + oldN + " new: " + newN);

  if (oldN > newN) {
    for (let i = oldN; i >= newN; i--) {
      arr.push(i);
    }
  } else if (oldN < newN) {
    for (let e = oldN; e <= newN; e++) {
      arr.push(e);
    }
  }

  console.log("array: " + arr.length);
  oldN = newN;

  for (let u = 0; u < arr.length; u++) {
    (function(index) {
      setTimeout(() => {
        document.getElementsByTagName('span')[0].innerText = arr[index];
      }, 100 * u);
    })(u);
  }

}
<div class="board">
  <span><!----></span>
</div>

<br/>
<input type="text" id="newVar" />
<button onclick="runner()">Start</button>

这似乎可行,但是如果我从13转到7,它将不会填充数组,因此不会运行倒数,从7到13也会发生相同的问题。

有什么主意吗?

亲切问候

1 个答案:

答案 0 :(得分:5)

您忘记了将输入值(字符串)转换为数字。然后按字母顺序而不是按数字对它们进行比较,然后按"13" < "7"进行比较,因此循环不起作用。使用

newN = parseInt(document.getElementById('newVar').value, 10);