免責事項: 私は本当の開発者ではないので、おそらくコード スパゲッティをここに持っているでしょう...そして今のところ、私が持っているもので作業する必要があります。つまり、ダクトテープ タイプの修正になる可能性があります。 . ;-)
Javascript と PHP を使用して、次のことを行います。
- 画面上の画像のペアを点滅させます
- キーの押下を「リッスン」してキャプチャします(左または右の画像を示す特定のキー)
- 10 組の画像について繰り返す
私は、Javascript で div の可視性を画像ペアで変更し、イベント リスナーを呼び出して、すべて正確なタイミングでそれを行いました。「キャプチャ」部分は、innerHTML をページのフォーム領域に「書き込む」Lか、使用することによって行われます。R
ここに問題があります。私には、機会のある時間帯に誰かがキーを押し忘れたかどうかに気付く方法がありません。そのため、プロセスの最後にフォームが送信されるまで、記録された応答はカウントされません。
10 枚の画像ペアの最後に通知してから、ユーザーにセッションをやり直すか、どの画像ペアが見逃されたかを通知して、そのペア (またはペア) を自動的に再表示するようにしたいと思います。
画像ペアの点滅とキー押下のキャプチャを行うコードを次に示します。
<script type="text/javascript">
var randomPairList = <?php echo $_POST['topicNumber']-1; ?>;
function imgChoice(imgPair)
{
var imgDataR = '<input type="hidden" name="'+imgPair+'[<?php echo $_POST['topicNumber']; ?>]" value="r" />';
var imgDataL = '<input type="hidden" name="'+imgPair+'[<?php echo $_POST['topicNumber']; ?>]" value="l" />';
var noData = '<?php $noData = 1; ?>';
$(document).on('keydown', function(event)
{
if (event.keyCode == 67 || event.keyCode == 37)
{
document.getElementById(imgPair+'Data').innerHTML = imgDataL;
$(document).unbind('keydown');
}
if (event.keyCode == 77 || event.keyCode == 39)
{
document.getElementById(imgPair+'Data').innerHTML = imgDataR;
$(document).unbind('keydown');
}
});
//div = document.getElementById(imgPair);
}
function stopChoice(imgPair)
{
$(document).unbind('keydown');
}
function flashImages()
{
i=500;
//$('#startTopic').fadeOut(500);
setTimeout("document.getElementById('fullpd').style.cursor='none';",50);
setTimeout("document.getElementById('fullpd').style.background='#464646';",500);
for(x=1;x<imgPairs.length;x++)
{
setTimeout("document.getElementById('clickSound').play();",i+2000);
setTimeout('document.getElementById("'+imgPairs[x]+'").style.display="block";',i+3500)
setTimeout('imgChoice("'+imgPairs[x]+'");',i+3495)
setTimeout('document.getElementById("'+imgPairs[x]+'").style.display="none";',i+4000)
setTimeout('stopChoice("'+imgPairs[x]+'");',i+6000)
i=i+4000;
}
setTimeout("document.getElementById('fullpd').style.background='#eaeaea';",i+1000)
setTimeout("document.getElementById('fullpd').style.cursor='default';",i)
setTimeout(function() {$('#endTopic').fadeIn(1000);},i+1000);
}
</script>
event.keyCode
だから、最後に別の関数が呼び出されて合計10イベントが記録されるようにする単純なカウントを維持する方法があるかどうか、そして再起動しない場合...または具体的にどの方法を追跡する方法があるかどうか疑問に思っていますimagePair
それらのペアが自動的に再実行されます。