我已經從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)數據集中。正如您正確指出的那樣,對後代項目進行適當的迭代就是實際的解決方案。與我所嘗試的不同,你的回答完美無缺,非常感謝你。 –