我有一个循环并合并功能,可以循环播放300多个音频文件。对于每个音频文件,我想存储音频重播的次数。
Qualtrics.SurveyEngine.addOnReady(function(){
var plays = 0;
function audioEnded(){
if (plays == 0) Qualtrics.SurveyEngine.addEmbeddedData( "replays${lm://CurrentLoopNumber}", plays);
plays++;
Qualtrics.SurveyEngine.setEmbeddedData("replays${lm://CurrentLoopNumber}", plays);
}
jQuery('audio').on('ended', audioEnded);
});
这是我的解决方案,但是它似乎不起作用,因为我的嵌入数据实际上并未存储在调查中(例如,调查流程中未包括这些数据)。手动创建300个嵌入式数据变量似乎不可行。另外,我的Loop&Merge具有随机顺序,我认为嵌入式数据不会捕获此随机顺序。
我能想到的更好的解决方案是使用某种分隔符将重播次数附加到用户的答案本身(文本答案)上。我也不十分确定这怎么可能。
任何提示?
是,您可以将它们保存在单个定界列表中。如果您还没有一个audioId,则将其添加为“循环并合并”字段(可能是1到300)。另外,您只需要最后一次更新嵌入的数据变量。以下将按随机顺序保存每个音频的audioId:replay,并以逗号分隔。在Loop&Merge块之前的调查流程中将replaysList初始化为空。
Qualtrics.SurveyEngine.addOnload(function(){
var replaysArr = "${e://Field/replaysList}".split(",").filter(Boolean);
var plays = 0;
jQuery('audio').on('ended', function() { plays++; });
Qualtrics.SurveyEngine.addOnPageSubmit(function() {
replaysArr.push("${lm://Field/1}:"+(plays-1));
Qualtrics.SurveyEngine.setEmbeddedData("replaysList",replaysArr.join(","));
});
});