私はこのコードを実装しています。アラートなしでJquery setTimeoutが動作しない場合
$('.mcqtd').click(function(){
var choice = this.id;
checkanswer(choice,questions[x].correctAnswer);
window.setTimeout(showquestion(x+1,0),3000); // 1 seconds
});
}
function checkanswer(answer,original){
if (answer=='choice'+original){
$('#choice'+original).css('backgroundColor', '#DD792E');
$('#choice'+original).append("<span class='padding10 mcqsymbol'><img src='images/right_icon.png' /></span>");
} else {
$('#'+answer).css('backgroundColor', '#AFA689');
$('#'+answer).append("<span class='padding10 mcqsymbol'><img src='images/wrong_icon.png' /></span>");
$('#choice'+original).css('backgroundColor', '#DD792E');
$('#choice'+original).append("<span class='padding10 mcqsymbol'><img src='images/right_icon.png' /></span>");
}
}
Onclick
、tds
が強調されるべき、と3秒後、次の質問をロードする必要がありますが、これは起きていない、3秒後に次の質問がロードされているが、背景が変更されていません。私がcheckanswer()
の中に何か警告すると、コードが動作します。私は何をすべきですか?
サイドノート:setTimeoutが機能しないのは、3000ミリ秒後に最初の引数を呼び出すためです。前にshowquestion(x + 1,0)を呼び出すと、undefined(返りません)が返され、setTimeoutは3000ミリ秒後にundefinedを呼び出そうとします。 – dejakob
あなたは歓迎です、@AliZia! – eisbehr
「setTimeout(showquestion、3000、x + 1,0); https://developer.mozilla.org/en/docs/Web」のように、ラッパーを使用せずにパラメータをコールバック関数に渡すこともできます。/API/WindowTimers/setTimeout –