2016-04-29 3 views
0

Для исследовательского проекта, над которым я работаю, я пытаюсь реализовать таймер, используя функциональность Javascript на Qualtrics, которая будет отслеживать время и отображать его для объектов на нескольких страницах.Реализация многостраничного таймера в Qualtrics

Общая идея моего кода - отслеживать отсчет времени по нескольким страницам. То есть, у меня есть ряд задач, каждый на отдельной странице, но в том же блоке, и я хотел бы отображать, сколько времени осталось каждый раз, когда загружается новая страница.

Для этого сначала я определил несколько встроенных полей данных «timeleftrounded» и «start time» и оставил значения, которые будут назначены позже.

Во-вторых, я поставил следующий код по последнему вопросу непосредственно перед страницами, на которых я хочу, чтобы таймер начинался. Мое намерение состоит в этот код, чтобы читать в текущее время для определения встроенных данных «start_time»

Qualtrics.SurveyEngine.addOnload(function() 
{ 
Event.observe($('NextButton'), 'click', function (e) 
    {  
     Qualtrics.SurveyEngine.setEmbeddedData("start_time", Date.now()); 
    }); 
}); 

На следующей странице мои задачи начинаются, и как я хочу предметы иметь 40 минут общей сложности, я просто " 40 минут ", код не нужен. Но по этому вопросу у меня больше кода, который затем должен подсчитать оставшееся время (в минутах), когда нажимается кнопка для загрузки следующей страницы.

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    Event.observe($('NextButton'), 'click', function() 
{ 
     var timeleftrounded = (2400000- (Date.now() - Number("${e://Field/start_time}")))/60000;  
    Qualtrics.SurveyEngine.setEmbeddedData("timeleftrounded",timeleftrounded); 
     }); 
    }); 

Следующая страница использует следующий код, чтобы закруглить этот переменный «timeleftrounded» к первой десятичной точке и отображать его на предмет,

$e{ round(e://Field/timeleftrounded , 1) } 

Вот где начинается моя путаница: хотя этот код работает правильно, когда я использую функцию «Просмотр блока ...», когда я использую полный режим предварительного просмотра опроса или запускаю опрос (я сделал копию), таймер не работает - если я не дам неправильный ответ на вопрос, он просто отобразит «0». На каждой странице есть вопрос с проверкой проверки, и как только я даю неправильный ответ хотя бы один раз, таймер работает снова, но если я дам только правильные ответы, таймер никогда не будет работать.

Надеюсь, что мне не хватает чего-то очевидного, но я не смог найти решение в любом месте в Интернете, поэтому я решил, что это может быть интерес к другим людям.

ответ

1

Добавление прослушивателя событий на следующей кнопке обычно не работает, потому что у Qualtrics есть свой собственный прослушиватель событий на следующей кнопке.

Я собираюсь предложить гораздо более простой подход. Используйте встроенную встроенную переменную Q_TotalDuration, которая всегда имеет текущую общую продолжительность опроса в секундах.

В потоке обследования, как раз перед вашими синхронизированными вопросами запуск:

start_time = ${e://Field/Q_TotalDuration} 

HTML в вашем заголовке:

<div id="timeLeft" style="text-align:right"></div> 

JavaScript на ваши синхронизированные вопросы (просто нужно один на каждой странице):

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    var timeleftrounded = (2400 - (parseInt("${e://Field/Q_TotalDuration}") - parseInt("${e://Field/start_time}")))/60; 
    timeleftrounded = timeleftrounded.toFixed(1); 
    $('timeLeft').update(timeleftrounded + " minutes left"); 
}); 
Смежные вопросы