【问题标题】:JavaScript variable to piped textJavaScript 变量到管道文本
【发布时间】:2018-07-02 19:07:32
【问题描述】:

我有一个生成文本输出的自定义脚本。我想将此文本通过管道传输到嵌入式数据字段中,然后在同一问题中显示为管道文本。我设置了一个空白的嵌入式数据字段(我们称之为myField),并在问题文本中包含${e://Field/myField}。该脚本会通过管道传输到最终数据,但不会传输到问题文本。

下面显示的代码使用在堆栈溢出时找到的代码来生成类似的输出等:

Qualtrics.SurveyEngine.addOnload(function()
{
    function getRandomSubarray(arr, size) {
    var shuffled = arr.slice(0), i = arr.length, temp, index;
    while (i--) {
        index = Math.floor((i + 1) * Math.random());
        temp = shuffled[index];
        shuffled[index] = shuffled[i];
        shuffled[i] = temp;
    }
    return shuffled.slice(0, size);
}

var x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var fiveRandomMembers = getRandomSubarray(x, 5);
Qualtrics.SurveyEngine.setEmbeddedData('myField', fiveRandomNumbers);
});

我是否缺少对这个特定问题的参考?

【问题讨论】:

    标签: javascript qualtrics


    【解决方案1】:

    在将页面发送到浏览器之前,管道变量在 Qualtrics 服务器上得到解析。如果你想动态更新页面上的文本,你必须使用 JavaScript,而不是管道。因此,在问题中包含管道文本字段的位置放置一个带 id 的跨度。

    <span id="fiveRandomMembers"></span>
    

    然后在脚本末尾更新 span 的 innerHTML。

    jQuery("#fiveRandomMembers").html(fiveRandomMembers); 
    

    【讨论】:

    • 非常感谢——我突然想到这可能是问题所在。我已经通过在(隐藏的)Q0 上运行 JS 然后在 Q1 上输入 EDF 文本的 hack 解决了这个问题,但同样,感觉就像是 hack。
    • 顺便说一句,我刚刚实现了这个;工作精美,不足为奇。再次感谢您简洁明了的回答!
    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 2015-01-22
    • 1970-01-01
    • 2015-03-16
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多