使用 Javascript 延迟 Qualtrics 中的文本显示

Delay Display of Text in Qualtrics using Javascript

(这与未回答的问题 相关)

我正在进行 Qualtrics 调查。我想延迟显示一些文本(比如,text)——它应该隐藏 5 秒,然后显示。

我在这里找到了一个资源 - Javascript for Qualtrics - 我无法开始工作。

借鉴这个例子,我尝试通过延迟显示照片来复制它。我这样做是为了看看在我继续延迟显示文本而不是照片之前是否可以正常工作。

在HTML部分,我输入:

Time: <span id="time1">30</span><br>
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/%C3%81guila_calva.jpg/1280px-%C3%81guila_calva.jpg" style="width: 133px; height: 115px;" class='pic1' />

在Javascript部分,我有:

started = false;
function countDown1() {
  if (!started)
    started = true;
  else {
    var value1 = parseInt($('time1').innerHTML);
    $('time1').innerHTML = value1 - 1;

    if (value1 == 26) {
      var styling1 = document.getElementsByClassName('pic1')[0];
      styling1.style.display = "none";
    }
  }
  setTimeout(countDown1, 1000);
}
Event.observe(window, 'load', countDown1);

出于某种原因,计时器或照片没有任何反应。

我需要把上面的 Javascript 包裹在:

Qualtrics.SurveyEngine.addOnload(function()
{   

});

我也试过了,但没有改变。

所以我真的有两个问题。 1. 我如何修改上面的代码让它工作。以及 2. 如何修改代码的工作版本以在一定时间后显示文本?

你让它变得比需要的更复杂。

这里是问题的例子html:

This is a question. <span id="hiddentext" style="display:none">This text 
will display after five seconds.</span>

这里是问题的javascript:

Qualtrics.SurveyEngine.addOnload(function()
{
    setTimeout("$('hiddentext').style.display = 'inline'",5000);
});

这会将多项选择题中的单选按钮或选项隐藏 2 秒。如果您还需要隐藏下一个按钮,您可以从 Qualtrics 中已经提供的问题中添加一个时间问题,并将其设置为 "Enable submit after (seconds)"。

Qualtrics.SurveyEngine.addOnload(function() {
var QID = this.questionId;
console.log(QID);
for (var i = 1; i < 4; i++) {
    document.getElementById( QID + "-" + i + "-label" ).style.display="none";
}


(function(delay_container){
    for (var i = 1 ; i < 4 ; i ++){
        document.getElementById(QID + "-" + i + "-label").style.display="block";
    }
}).delay(2,this.questionContainer);
});    

假设您有两个句子,它们是两个独立的描述性文本框。并且您希望第二个框在第一个框之后出现几秒钟。当分配给第二个盒子时,以下内容对我有用。相同的代码也适用于以下框。您可以再次在页面末尾放置一个计时问题以隐藏“下一步”按钮。

Qualtrics.SurveyEngine.addOnload(function() {
var QID = this.questionId;
console.log(QID);
for (var i = 1; i < 4; i++) {
    document.getElementById( QID).style.display="none";
}


(function(delay_container){
    for (var i = 1 ; i < 4 ; i ++){
        document.getElementById(QID).style.display="block";
    }
}).delay(2,this.questionContainer);


});