Как сэкономить время из секундомера и отобразить это время на другой html-странице - PullRequest
0 голосов
/ 16 июня 2019

function runTimer() {
    currentTime = leadingZero(timer[0]) + ":" + leadingZero(timer[1]) + ":" + leadingZero(timer[2]);

    theTimer.innerHTML = currentTime;
    timer[3]++;

    timer[0] = Math.floor((timer[3]/100)/60);
    timer[1] = Math.floor((timer[3]/100) - (timer[0] * 60));
    timer[2] = Math.floor(timer[3] - (timer[1] * 100) - (timer[0] * 6000));
}

Итак, я сейчас работаю над проектом Typing Test в javascript и моя программа работает в настоящее время так, что когда пользователь впервые начинает набирать приглашение, запускается таймер секундомеравремя пользователя.Как только пользователь заканчивает вводить приглашение, секундомер останавливает хронометраж, а затем пользователь переходит на конечную страницу, на которой должно отображаться время пользователя.Однако у меня возникают проблемы с попыткой сэкономить время пользователя.Например, если пользователь А завершит тест за 15 секунд, программа должна сэкономить время пользователя, а затем отобразить его на следующей странице, к которой я их приведу.

Я попытался использовать функцию localStorage.setItem, но в итоге получил [объект HTML-элемент] на моей странице вместо счета.Ниже я приложил свой код, связанный с функцией таймера моей программы.Я хочу сэкономить время, используя локальное хранилище, но оно не будет работать.

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Локальное хранилище хранит элементы в виде строк.Поэтому самым простым способом было бы сохранить время начала и время окончания.

Итак, когда пользователь начинает, позвоните:

window.localStorage.setItem("starttime", Date.now());

, а когда пользователь закончит, позвоните:

window.localStorage.setItem("endtime", Date.now());

Это даст вам 2 отметки времени, которые вы затем сможете использовать для форматирования вашего дисплея.

Получите отметки времени на следующей странице с помощью:

starttime = window.localStorage.getItem("starttime");
endtime = window.localStorage.getItem("endtime");

totalseconds = (endtime - starttime) / 1000;

, затем используйтеобщее количество секунд на отработку часов / минут / секунд и т. д.

Если вам нужно отобразить таймер на экране, когда пользователь печатает, вы можете просто использовать

totalseconds = (Date.now() - window.localStorage.getItem("starttime")) / 1000;

Я проверял этов Chrome и работает нормально.

0 голосов
/ 17 июня 2019

Самое простое решение, которое я придумала, это отправить время пользователя в новом URL-адресе в качестве параметра. Когда ваше время остановится, добавьте эту строку:

window.location = 'your/new/page/location.html?time=' + time;

время - время пользователя. Как видите, параметр идет после '?' знак. Итак, на новой странице вы сможете получить этот параметр с этой строкой:

var usersTime = window.location.search.split('=')[1];

Здесь метод "search" берет часть URL после '?' знак (включая его) - это будет «? время = 15». И затем вы разделяете эту строку с помощью «=», поете как разделитель и берете вторую часть, которая является числом 15.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...