我要做什么:
实际结果
预期结果
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>
答案 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>