我已经从JsPsych修改了一个调查 - 多选择插件,以便以复选框的形式获取响应,而不是单选按钮,因为我需要到的图像呈现给用户,随后4层的替代方案,这样的:使用嵌套.each()函数存储数据导致重复值
其中A,B,C和d也图像,与各一低于它们各自的复选框。这种结构必须出示不止一次,像这样:
所以在这个例子中,预计产量将是:
{"Q0":["Option A","Option B"]} //this is the first "question" displayed
{"Q1":["Option B","Option C"]} //second one
{"Q2":["Option B","Option D"]} //third one
而是我得到复制为其他人第一个答案的问题:
:下面提供{"Q0":["Option A","Option B"]} //this is the first "question" displayed
{"Q1":["Option A","Option B"]} //second one
{"Q2":["Option A","Option B"]} //third one
我的代码
$("div." + plugin_id_name + "-question").each(function(index) {
var id = "Q" + index;
var val = [];
var a = $(".jspsych-survey-multi-choicemrbeta-option");
$("input:checkbox:checked").each(function(){
val.push($(this).attr("value"));
});
var obje = {};
obje[id] = val;
$.extend(question_data, obje);
});
我试着通过在控制台上打印它们来追踪每一步生成的值,所以我猜测问题是我如何实现这些嵌套循环,因此这个问题的名称。
我试图实现这种循环时,不同的方法,没有更好的结果:
for (var j = 0; j < trial.options[index].length; j++) {
if ($('jspsych-survey-multi-choicemrbeta-response-' + j).is(':checked')) {
val.push($(this).attr("value"));
}
}
我完整的代码工作示例可以发现here,为您测试(寻找jspsych-survey-multi-choicemrbeta.js
文件,来自#141行)。 CSS不包括在内,所以看起来会略有不同。
请注意,此代码的输出是一个CSV文件,并且在单个单元格上给出了完整的响应集,因为所有这些问题都属于相同的JsPsych“试用版”。
感谢您的帮助。
我原本以为加入一些间隔条件将是关键。我实际上已经尝试在主循环结束时返回false,尽管它起作用,它将所有内容都存储在第一个问题(Q0)数据集中。正如您正确指出的那样,对后代项目进行适当的迭代就是实际的解决方案。与我所尝试的不同,你的回答完美无缺,非常感谢你。 –