我想做的是:
实际结果
预期结果
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>
发布于 2019-03-31 15:43:22
我建议您对重复调用使用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>
发布于 2019-03-31 15:38:15
你只给add()打过一次电话。您可能希望在generate()函数中调用它。此外,var count = 0应该在add()函数之外,以便它的值在调用中被持久化。
西德诺特:
count调用中增加两次add()。setTimeout内部的外部generate()是无用的。number是一个泄漏的全局,您应该用var声明它。https://stackoverflow.com/questions/55442525
复制相似问题