В вашем коде:
pagename= $(this).attr('id');
Приведенный выше код создаст глобальную переменную с именем pagename при выполнении кода.Если вы хотите это сделать, вы должны объявить это в соответствующей области (то есть глобальной).Однако обычно считается, что лучше хранить его как свойство объекта или в замыкании и избегать ненужных глобальных переменных.
Кроме того, гораздо эффективнее использовать:
pagename = this.id;
Строка:
starttime();
вызывает функцию starttime ..
function starttime() {
//create a starting timestamp...
start = new Date().getTime();
Опять же, убедитесь, что вы объявляете переменные в соответствующей области или используете какую-то другую стратегию для совместного использования значений.Кроме того, вы можете оставить start в качестве объекта Date (т.е. не вызывать getTime ).
//alert(+ start); // if this alert is commented out the time is not started
Это обычно указывает на то, что пауза, созданная alter"исправляет" вашу проблему, поэтому она имеет какое-то отношение к времени.
pagetime();
Теперь он вызывает pagetime .
function pagetime(pagename) {
time = (new Date().getTime() - start) / 1000;
Снова неявный глобальный.
Здесь вы звоните pagetime сразу после установки start , вероятно, часы не сдвинулись.В некоторых браузерах разрешение таймера составляет около 15 мс, поэтому, если процессор не очень занят чем-то другим или у вас есть шанс на этой границе 15 мс (крайне маловероятно), тогда new Date () будет иметьточно такое же значение, как start .
Вы также можете выполнить назначение следующим образом:
time = (new Date()) - start;
Но time почти наверняка будет равно нулю,У bhamlin есть решение для этого.