如何使用具有多个分页符的块的全局计时器自动移动 Qualtrics 中的受访者?
How to use automatically move respondents in Qualtrics with global timer for Block with multiple page break?
.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);
}
});
您可以使用嵌入式数据变量将剩余时间从一页传递到下一页,并且可以在问题显示逻辑中使用嵌入式数据变量,这样一旦时间到了,您就不会显示剩余的问题.您可以通过单击下一步按钮前进到下一页。
在您的调查流程中,在问题块之前初始化嵌入数据变量 timeRemaining:
timeRemaining = 120
然后在您的代码中将 timerSeconds 设置为 timeRemaining:
var timerSeconds = parseInt("${e://Field/timeRemaining}");
在您的 startTimer 函数中,更新 timeRemaining:
Qualtrics.SurveyEngine.setEmbeddedData('timeRemaining', timer);
然后在你的 timeOver 函数结束时转到下一页:
$('NextButton').click();
除第一个问题外,您在所有问题上的显示逻辑:
if timeRemaining > 0
将您的脚本复制到块中每个页面上的第一个问题。
.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);
}
});
您可以使用嵌入式数据变量将剩余时间从一页传递到下一页,并且可以在问题显示逻辑中使用嵌入式数据变量,这样一旦时间到了,您就不会显示剩余的问题.您可以通过单击下一步按钮前进到下一页。
在您的调查流程中,在问题块之前初始化嵌入数据变量 timeRemaining:
timeRemaining = 120
然后在您的代码中将 timerSeconds 设置为 timeRemaining:
var timerSeconds = parseInt("${e://Field/timeRemaining}");
在您的 startTimer 函数中,更新 timeRemaining:
Qualtrics.SurveyEngine.setEmbeddedData('timeRemaining', timer);
然后在你的 timeOver 函数结束时转到下一页:
$('NextButton').click();
除第一个问题外,您在所有问题上的显示逻辑:
if timeRemaining > 0
将您的脚本复制到块中每个页面上的第一个问题。