输入新值时,如何重置变量以从头开始计数?

时间:2018-10-21 12:15:13

标签: javascript

我是Java的新手。 我决定用我已经教过的东西做一个小游戏。
规则很简单。我只需要console.log输入多少相同的值,并与计算机随机生成的值进行比较。
当我输入新值时,值的数量又回到0。
例如,计算机生成值“ 495”。
当我输入“ 501”时,计算机将显示结果“ 1 hello”,因为两个值的值均相同“ 5”。当我输入“ 154”时,计算机将显示结果“ 2 hello”,因为两者都具有值“ 5”和“ 4”。

这是代码

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>hello counting </title>
  <link rel="stylesheet" href="./index.scss">
</head>
<body>
  <div class="wrapper">
    <h1>hello count</h1>
<form class="game-form">
    <input type="text" name='game1' class='number-input'>
    <input type="text" name='game2' class='number-input'>
    <input type="text" name='game3' class='number-input'>
    <button class="add">add</button>
</form>
  <ul class="game-list"></ul>
</div>
</body>
  <script src="./index.js"></script>
</html>


Javascript

const gameFormEl = document.querySelector(".game-form");
const gameListEl = document.querySelector(".game-list");
let gameArr = [];

gameFormEl.addEventListener("submit", e => {
  addNum(
    e.target.elements.game1.value,
    e.target.elements.game2.value,
    e.target.elements.game3.value
  );
  e.preventDefault();
  e.target.reset();
});

// computer generated random number
const shuffle = () => {

  let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  const container = [];
  let container2 = [];
  const arrLeng = arr.length; 
  for (let i = 0; i < arrLeng; i++) {
    arrSplice = arr.splice(Math.floor(Math.random() * arr.length), 1);
    container.push(Number(arrSplice));
  }
  // pick first three number that generates randomly
  for (let j = 0; j < 3; j++) {
    container2 = container2.concat(container[j]);
  }
   // because player input number is string format
  return container2.join("");
};
shuffle();


const ranComNum = shuffle();

 // players random input number
const addNum = (a, b, c) => {
  let numAdd = a + b + c;
  const gameItemEl = document.createElement("li");
  gameItemEl.textContent = numAdd;

  // pushing strings into numAdd array 
  gameArr.push(numAdd);

  console.log(ranComNum);

  // hello function 
  const hello = () => {
   var helloCounter = 0;
    for (let i = 0; i < 3; i++) {
      for (let j = 0; j < gameArr.length; j++) {
        for (let k = 0; k < 3; k++) {
          if (ranComNum[i] === gameArr[j][k]) {
           helloCounter++;
         }
        }
      }
    }
    console.log(`${helloCounter} hello`);
   };
  hello()
};

除了一件事情,我几乎完成了代码。
我尝试过,但是我不知道如何在输入新值时对变量(helloCounter)再次从0开始计数。它保持以前计数的值,并在我输入新值时不断增加。
我应该在addNum函数之外创建新函数来计算问候吗?

1 个答案:

答案 0 :(得分:0)

好的,首先将脚本移到正文中,它应该在正文的页脚中。

第二,最好随机生成数字:
Math.floor(Math.random() * (Max - Min +1) + Min);
所以
Math.floor(Math.random() * (999 - 100 + 1) + 100);

第三,您正在使用let,它是严格的重新声明,因此您不能重新声明该变量。尝试使用var helloCounter = 0