如何使用Qualtrics中的受访者自动移动具有多个分页符的Block的全局计时器?

时间:2017-11-15 21:39:04

标签: javascript html qualtrics



.header-cont {  
   width:100%;  
   position:fixed;  
   top:0px;  
   z-index:1000;
 }  
 .header {  
   height:auto;  
   background:#FFFFFF;  
   width:100%;  
   top: 0px;
	margin:0px auto;
   position:fixed;
	 z-index:1000;
 }  
 .timer{  
   width: 500px;  
   margin: auto;  
   text-align: center;  
   vertical-align: middle;  
   line-height: 50px;       
   font-size: 28px;  
 }




在我的调查中我有多个问题与块中的分页符分开,我想对整个问题使用相同的计时器,即使问题将显示在不同的页面上。我有一些可以计算的示例代码,但在计时器结束后没有任何反应。结果未自动提交。定时器启动后,我想重定向用户回答一些生物问题。



Qualtrics.SurveyEngine.addOnload(function()
{

var header = document.createElement("div");  
 header.className = "header"  
 header.id = "header_1";  
	
var timer = document.createElement("div");  
 timer.className = "timer";  
 timer.id = "timer_1";  
 timer.innerHTML = "Time Remaining: <span id='time'>02:00</span>"; 
	
header.appendChild(timer);
document.body.insertBefore(header, document.body.firstChild);
	
function startTimer(duration, display) {  
  var timer = duration, minutes, seconds;  
  var myTimer = setInterval(function() {  
   minutes = parseInt(timer / 60, 10)  
   seconds = parseInt(timer % 60, 10);  
   minutes = minutes < 10 ? "0" + minutes : minutes;  
   seconds = seconds < 10 ? "0" + seconds : seconds;  
   var text = ('innerText' in display)? 'innerText' : 'textContent';
   display[text] = minutes + ":" + seconds;  
   if (--timer < 0) {  
    clearInterval(myTimer);  
    timeOver();  
   }  
  }, 1000);  
 }  
 var timerSeconds = 120,  
 display = document.querySelector('#time');  
 startTimer(timerSeconds, display);  
 var timeOver = function() {  
  document.getElementById("timer_1").innerHTML = "Time is up.";  
  x = 1;  
  var bgColor = setInterval(change, 1000);  
 }  

});
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您可以使用嵌入数据变量将剩余时间从一个页面传递到下一个页面,并且您可以使用问题显示逻辑中的嵌入数据变量,这样一旦时间到了,您就不会显示剩余的问题。您可以单击下一步按钮前进到下一页。

在您的调查流程中,在问题块之前初始化嵌入数据变量timeRemaining:

timeRemaining = 120

然后在你的代码中,timerSeconds被设置为timeRemaining:

var timerSeconds = parseInt("${e://Field/timeRemaining}");

在startTimer函数中,更新timeRemaining:

Qualtrics.SurveyEngine.setEmbeddedData('timeRemaining', timer);

然后在timeOver函数结束时转到下一页:

$('NextButton').click();

除了第一个问题之外的所有问题的显示逻辑:

if timeRemaining > 0

将脚本复制到块中每个页面的第一个问题。