循环重新加载相同的试用而不是下一个Qualtrics

时间:2016-11-22 08:23:30

标签: javascript loops reload qualtrics

我在使用Qualtrics Loop和Merge + Javascript时遇到问题。基本上,Qualtrics重新加载我的循环的先前试验而不是新的试验。

首先,这是我尝试做的事情:我有两组图片,在每个循环中,每组的一张图片被随机挑选并显示(随机向左或向右)。在循环结束时,将显示该组的每个图片(每组33个,因此循环的33次试验),而不会选择相同图片的两次。在每次试验中,我还会随机显示条件“在关系中”或“朋友”的名称

详细问题: 我编写了一些似乎工作得很好的东西,除了在某些时候:它发生在加载循环的下一个试验时,它不会显示新的图片,而是显示在之前的试验中呈现的那个(以及同名的条件)。这可以用一段时间向我展示相同的图片,或者这可能只是一次。 在任何情况下,这个代表的试验都算作试验,因为我的循环总是在33次试验后结束,无论其中一些实际上不是新的图片。 此问题并不总是出现在同一个试验中,并且可能在循环中出现多次。 还发生了只显示一张图片是新的,另一张是上一次试验中显示的图片。 (我真的不明白这是怎么发生的)。 我在一个空问题中编码图片的随机化,就在显示图片的问题之前。这个空问题应该不需要按下“下一步”按钮。当试验正确时,这是正常的,但是当下一次试验将是一次“重新加载”试验时,需要按下“下一步”按钮。 我尝试使用Firefox和Edge进行调查,问题是一样的。

我的javascript代码: 在第一个调查问题中:

Qualtrics.SurveyEngine.addOnload(function () {
    function shuffle(o) { //v1.0
        for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
        return o;
    };

    var FacesM_list = "IM_7U04c3TQlA7dT3D,IM_eE5iBcKfoOblbJH,IM_a3mklzA9E1OuRWl,IM_bQnoSJOGwa0vn9P,IM_5inNCVgPdHHTVSR,IM_bHlurQJWSXDRDFj,IM_3rCr2DIzW2cvqLP,IM_509x1wz7pM6PP0N,IM_3UGdsp02IcCqaSV,IM_eLrY7bwDPiT7apn,IM_3LdlHnBb6tnkBEh,IM_3pY6z6JDgaDvwq1,IM_9HtZxBS79DiOfR3,IM_03c9pDSpcwcqIyF,IM_6WGKJOzUWK4TJat,IM_2rxQPEGO7SEvsY5,IM_9YN3UCUtWEWTfGR,IM_8jZTSUAGJfuVECV,IM_9nQkFhRY2cLIVgN,IM_2abcJA7B79jt30h,IM_cD31N8XPTGliUN7,IM_0eL8iQd4PVdyuQl,IM_cuOoV9gSAe6CWd7,IM_9Nv3X7lWYEsTzsF,IM_5ccXAuuomEEyamp,IM_9mnvThFiNA5U84t,IM_e3UGNNuMdrKH8cl,IM_3aggsd5P9MMlUDr,IM_4ORY6GEMW8CmNPT,IM_50WOBkz8ADTFGHH,IM_3rqtlVBfijYCccZ,IM_3CzDsr0tYv7PH5H,IM_4SmeprjDgOeCl5b"
    var FacesF_list = "IM_6fkHDs5f6ItAuk5,IM_0ri9MLjDhHxyonP,IM_bKlHtoAaxnBFlnT,IM_1WUqtBPpdhERpjf,IM_ac0yWos8tAqSMNT,IM_3xCePACn1Lq97tH,IM_6o1ZPLGUM682Au1,IM_babATdN3VtBLIsl,IM_8HSUICLvFvDXaN7,IM_0ebTztq3ML5Zh0V,IM_3lB8j5dhMs8i8ip,IM_0iC0pwDlpOkcTGt,IM_cIRojwU6sx3W7Od,IM_9ZHNbignrAfcThX,IM_8iFXvVcCqk5hemN,IM_6rrwImdl4Nss0u1,IM_6mPEaoIdazwqAWp,IM_b8lrxhsPGcc1HaR,IM_23uYWeF2gYVMsap,IM_6ycfrm5xOlewjFb,IM_7UKValFGc9Kmpp3,IM_8Bbkzsmc7CyMvqt,IM_d5S95FnSgo8j06F,IM_brXT4VUU8QJiRwN,IM_9MEkpgEmOwXhril,IM_6KG9qokOlD16GDH,IM_ellgVnYbtb8ZSbb,IM_eg6qSYMQ56z5JpX,IM_5vfbDNPdZeP1XCZ,IM_cDbOprwCUUSnUZT,IM_cumIGHXOFByV4Pz,IM_0jh2Va4JTfGsQDz,IM_0CGlFRy4dW8lDcF"
    var FacesM_order = [];
    for (var i = 1; i <= 33; i++) {
        FacesM_order.push(i);
    }

    FacesM_order = shuffle(FacesM_order);
    var FacesF_order = [];
    for (var i = 1; i <= 33; i++) {
        FacesF_order.push(i);
    }
    FacesF_order = shuffle(FacesF_order);
    var nTrial = 0;

    Qualtrics.SurveyEngine.setEmbeddedData("FacesM_order", FacesM_order.toString());
    Qualtrics.SurveyEngine.setEmbeddedData("FacesF_order", FacesF_order.toString());
    Qualtrics.SurveyEngine.setEmbeddedData("FacesF_list", FacesF_list.toString());
    Qualtrics.SurveyEngine.setEmbeddedData("FacesM_list", FacesM_list.toString());
    Qualtrics.SurveyEngine.setEmbeddedData("nTrial", nTrial.toString());

});

在Block with Loop and Merge的第一个问题中:

Qualtrics.SurveyEngine.addOnload(function () {
    var nTrial = Number("${e://Field/nTrial}") + 1;
    var FacesF_list = "${e://Field/FacesF_list}".split(',');
    var FacesM_list = "${e://Field/FacesM_list}".split(',');
    var FacesF_order = "${e://Field/FacesF_order}".split(',');
    var FacesM_order = "${e://Field/FacesM_order}".split(',');
    var FacesF = FacesF_list[FacesF_order[nTrial]];
    var FacesM = FacesM_list[FacesM_order[nTrial]];
    var rand = Math.random()

    if (rand < 0.5) {
        var left = FacesF
        var right = FacesM
    } else {
        var left = FacesM
        var right = FacesF
    }

    Qualtrics.SurveyEngine.setEmbeddedData("nTrial", nTrial.toString());
    Qualtrics.SurveyEngine.setEmbeddedData("left", left.toString());
    Qualtrics.SurveyEngine.setEmbeddedData("right", right.toString());

    this.clickNextButton.delay(.00000000000001);
});

非常感谢你的帮助!

0 个答案:

没有答案