Итак, я новичок в javascript, и я ищу способ подсчитать, сколько раз функция выполняется. Код случайным образом генерирует квадрат или круг, и при отображении фигуры отображается форма, когда вы нажимаете ее (время реакции). Это прекрасно работает и денди. Но я ищу способ отслеживать количество щелчков формы, а затем, в конечном итоге, суммарное время для вычисления среднего времени за клик. Если это помогает, я получаю довольно хороший фон на C++.Javascript Closure функции
Чтобы подсчитать количество кликов, я думал о добавлении функции закрытия. Отсюда: How do I find out how many times a function is called with javascript/jquery?
myFunction = (function(){
var count = 0;
return function(){
count++
alert("I have been called " + count + " times");
}
})();
И отсюда: Function count calls
var increment = function() {
var i = 0;
return function() { return i += 1; };
};
var ob = increment();
Но я попробовал глобальные переменные и несколько вариаций функций закрывающих но безрезультатно (обратите внимание на комментарии). Я попытался включить функцию закрытия в другие функции. И я также пробовал что-то вроде:
var increment = makeBox();
Мне интересно, может ли кто-нибудь направлять меня в правильном направлении. Это будет высоко ценится!
var clickedTime; var createdTime; var reactionTime;
var clicked; var avg = 0;
avg = (avg + reactionTime)/clicked;
document.getElementById("clicked").innerHTML = clicked;
document.getElementById("avg").innerHTML = avg;
function getRandomColor() {
....
}
function makeBox() { // This is the long function that makes box
createdTime = Date.now();
var time = Math.random();
time = time * 3000;
///////// var increment = function() {
var i = 0;
//return function() { return i += 1; };
i++;
return i;
///////// };
// clicked++; /////////// global variable returns NaN
// console.log(clicked);
// alert("Clicked: "+clicked);
setTimeout(function() {
if (Math.random() > 0.5) {
document.getElementById("box").style.borderRadius="75px"; }
else {
document.getElementById("box").style.borderRadius="0px"; }
var top = Math.random(); top = top * 300;
var left = Math.random(); left = left * 500;
document.getElementById("box").style.top = top+"px";
document.getElementById("box").style.left = left+"px";
document.getElementById("box").style.backgroundColor = getRandomColor();
document.getElementById("box").style.display = "block";
createdTime = Date.now();
}, time);
}
ob = increment(); //////////////////////// I think this gives me 1 every time
alert("Increment: "+ob); //////////////////
document.getElementById("box").onclick = function() {
clickedTime = Date.now();
reactionTime= (clickedTime - createdTime)/1000;
document.getElementById("time").innerHTML = reactionTime;
this.style.display = "none";
makeBox();
}
makeBox();
По крайней мере, 'count ++' в первом блоке отсутствует точка с запятой. – Roope
@Roope Не нужно –
@ DenysSéguret полезно знать! – Roope