2016-08-18 7 views
2

ラジオボタンの代わりにチェックボックスの形で応答を得るために、JsPsychから調査マルチ選択プラグインを変更しました。このような4つの代替続いてユーザに画像を提示する:A、B、C及びDは、それぞれ下記のそれぞれのチェックボックスと、また画像でネストされた.each()関数を使用してデータを格納すると値が複製される

enter image description here

。したがって、この例では、予想される出力は次のようになり

enter image description here

{"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は含まれていないので若干異なって見えます。

これらの質問はすべて同じJsPsych「試用版」に属するため、このコードの出力はCSVファイルであり、すべての回答が1つのセルに与えられます。

ありがとうございました。

答えて

1

内部ループは、すべてのチェックボックスだけでなく、質問に属するものだけを繰り返します。私はいくつかのブレーク条件を追加することを考えていた

$(this).find("input:checkbox:checked").each(... 
+0

:これまで

$("input:checkbox:checked").each(... 

:チェックボックスを想定し

は、関連する質問に対するdivの子孫である、あなたはこのから内側のループを変更する必要がありますキーとなるだろう。私は実際にメインループの最後でfalseを返そうとしましたが、それはうまくいったものの、最初の質問(Q0)のデータセットにすべてが格納されていました。正しく指摘したように、子孫アイテムに対する適切な反復が実際の解決策でした。私が試したものとは違って、あなたの答えは完璧なことでした、ありがとうございました。 –

関連する問題