現在、すべてのモジュールで同様の機能を持つ小さな Web アプリケーションを構築しています。私の隣にいるすべてのプログラマーがこれらの関数を呼び出すと、これらの関数が機能を実装するために必要だが重要なデータを返すように、小さな汎用関数をコーディングしたいと考えています。この例では、典型的な「真か偽かを選択する」演習に取り組もうとしています。したがって、template.php から次の関数を呼び出します。
function checkAnswers(){
var radiobuttons = document.form1.exer1;
var correctAnswers = answers(); //this is an array of string
var checkedAnswers = checkExerciseRB(radiobuttons, 2, correctAnswers);
for(i=0; i<checkedAnswers.length; i++){
alert(checkedAnswers[i]);
}
}
関数 checkExerciseRB は私の汎用関数で、checkAnswers から呼び出されます。
function checkExerciseRB(rbuttons, opciones, correct){
var answers = new Array();
var control = 0;
for(i=0; i<rbuttons.length; i++){
var noPick="true";
for(j=0; j<opciones; j++){
if(rbuttons[control+j].checked){
if(rbuttons[control+j].value==correct[i]){
answers[i]= 1;
noPick="false";
break;
}
else{
answers[i]=2;
noPick="false";
break;
}
}
}
if(noPick=="true")
answers[i]=0;
control=control+opciones;
}
return answers;
}
うまく機能しますが、私のお気に入りのブラウザー (FireFox、Chrome) のエラー ログを見ると、次のように表示されます。
TypeError: rbuttons[control + j] is undefined
この問題に対処する方法の手がかりはありますか?