3

我慢してください...私は実際には開発者ではないので、最初からこれについて最善の方法で取り組んでいないと確信していますが、私が作成しなければならないもので作業できることを望んでいますそれは正しく動作します...

jsとphpの組み合わせを使用して、画面上の画像のペアをフラッシュし、キーを押して左または右の画像を選択します(「c」と「m」または左矢印と「右矢印」)。

Safari、Firefox、IEでは正常に動作しているようですが、Chromeでは一貫して動作していません(動作する場合と動作しない場合があります)。

Chromeの実行中にインスペクターを調べたところ、2つの関数が見つからなかったことがわかりました。

Uncaught ReferenceError:imgChoiceが定義されていません(匿名関数)

Uncaught ReferenceError:stopChoiceが定義されていません(匿名関数)

答えを探していたところ、ChromeがflashImages()関数の処理速度が速すぎて、他の2つに到達していない可能性があります。

これを修正する方法はありますか?おそらく、imgChoice関数とstopChoice関数をflashImages関数に統合しますか?

既存の機能は次のとおりです。

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).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-1;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);
}
4

1 に答える 1

2

イベント ハンドラーをバインドしているときに、イベントを委任してみませんか..多分それが役立つかもしれません..

$(document).keydown(function(event) { この試みの代わりに

$(document).on('keydown' ,function(event) {
于 2012-09-14T21:04:04.220 に答える