我已经修改了JsPsych的调查多选插件,以获取复选框形式的响应,而不是单选按钮,因为我需要向用户呈现图像,然后是4替代品,像这样:
其中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,供您测试(从#141行查找jspsych-survey-multi-choicemrbeta.js
文件)。 CSS不包括在内,因此它看起来略有不同。
请注意,此代码的输出是CSV文件,并且在单个单元格上提供完整的响应集,因为所有这些问题属于相同的JsPsych&#34;试验&#34;。
感谢您的帮助。
答案 0 :(得分:1)
内部循环遍历所有复选框,而不仅仅是属于问题的复选框。
假设复选框是相关问题的div
的后代,您应该更改内部循环:
$("input:checkbox:checked").each( ...
到此:
$(this).find("input:checkbox:checked").each( ...