如何计算所有生成的数字?

时间:2019-03-31 15:35:52

标签: javascript

我要做什么:

  • 计算每5秒生成的所有数字。

实际结果

  • 仅生成数字,但不计算数字。

预期结果

  • 计算问题旁边生成并显示的所有数字。

function generator() {
  number = Math.floor(Math.random() * 11);
  setTimeout(function() {
    setTimeout(function() {
      document.getElementById("demo").innerHTML = number;
      generator();
    }, 5000);
  })
}

function add() {
var count = 0
  var element = document.getElementById("demo").innerHTML;
  if (element.innerHTML) {
  count++
  document.getElementById("demo1").textContent = count++;
  }
}

generator();
add();
<p id="demo"></p>
How many numbers was generated?
<p id="demo1"></p>

2 个答案:

答案 0 :(得分:1)

您仅拨打一次add()。您可能想从generate()函数内部调用它。另外,var count = 0应该在add()函数之外,以便在调用之间保持其值不变。

侧注:

  • 您每次count通话次数会增加add()两次。

  • setTimeout中的外部generate()没有用。

  • number是一个正在泄漏的全局变量,应使用var

  • 进行声明。

答案 1 :(得分:0)

我建议您使用setInterval进行重复呼叫,并使用data属性存储当前计数。

提取document.getElementById的调用以避免在每个setInterval周期中查找元素。

var demoElem = document.getElementById("demo");
var countElem = document.getElementById("demo1");

function generator() { 
  var interId = setInterval(function() {    
    var number = Math.floor(Math.random() * 11);
    demoElem.textContent = number;    
    add();
  }, 2000);
}

function add() {
  countElem.dataset.count = Number(countElem.dataset.count) + 1;
  countElem.textContent = countElem.dataset.count;    
}

generator();
<p id="demo"></p>
How many numbers was generated?
<p id="demo1" data-count='0'></p>