私はクイズを行っているスクリプトで疑いがあります。私の最後のクイズでは、答えが「A」の場合はA、B、Cの3つの答えがあり、「X」の場合は3点、「Y」の場合は2点、「Z」の場合は1点です。答えが「B」の場合、オプション「X」に対して2ポイント、「Y」オプションに3ポイント、「Z」オプションに1ポイントを合計します。答えが「C」の場合、オプション「X」に対して1ポイント、「Y」オプションに2ポイント、「Z」オプションに3ポイントが加算されます。配列に値を追加してからtrueオプションを返します。
この関数は、オプションA、B、Cのポイントをチェックし、最高のポイント数を持つオプションを返します。
しかし、私は変更したい:
の答えは、 "A" は4ポイントを蓄積している場合。答えが「B」の場合、2点が累積されます。答えが "C"の場合、0点が累積されます。
合計が10点以下の場合は、「X」オプションを返します。ポイントの合計が10を超え、24未満の場合は「Y」オプションが返されます。ポイントの合計が24を超える場合、「Z」オプションが返されます。
コード:
self.jobs = [{
title: 'Opção X',
description: 'Descrição Opção X'
}, {
title: 'Opção Y',
description: 'Descrição Opção Y'
}, {
title: 'Opção Z',
description: 'Descrição Opção Z'
}];
self.job = 9999;
self.questions = [{
text: 'Pergunta 1',
answered: false,
skipped: false,
answers: [{
text: 'A',
selected: false,
values: [3, 2, 1]
}, {
text: 'B',
selected: false,
values: [2, 3, 1]
}, {
text: 'C',
selected: false,
values: [1, 2, 3]
}]
}, {
text: 'Pergunta 2',
answered: false,
skipped: false,
answers: [{
text: 'A',
selected: false,
values: [3, 2, 1]
}, {
text: 'B',
selected: false,
values: [2, 3, 1]
}, {
text: 'C',
selected: false,
values: [1, 2, 3]
}]
}, {
text: 'Pergunta 3',
answered: false,
skipped: false,
answers: [{
text: 'A',
selected: false,
values: [3, 2, 1]
}, {
text: 'B',
selected: false,
values: [2, 3, 1]
}, {
text: 'C',
selected: false,
values: [1, 2, 3]
}]
}];
self.index = 0;
self.userAnswers = [];
self.error = false;
self.answerQuestion = function(elem) {
self.userAnswers[self.index] = elem.answer;
self.index = elem.$parent.$index + 1;
var question = elem.$parent.question;
question.answered = true;
angular.forEach(question.answers, function(answer) {
answer.selected = false;
});
elem.answer.selected = true;
};
self.changeQuestion = function(elem) {
var question = self.questions[self.index];
if (question && !question.answered)
question.skipped = true;
self.index = elem.$index;
};
self.goToResult = function() {
var question = self.questions[self.index];
if (question && !question.answered)
question.skipped = true;
self.index = self.questions.length;
}
self.viewResult = function() {
var hasError = false;
angular.forEach(self.questions, function(question) {
if (!question.answered) {
hasError = true;
question.skipped = true;
}
});
if (hasError) {
self.error = true;
$timeout(function() {
self.error = false;
}, 2000);
return false;
}
self.showQuiz = false;
var result = getResult();
self.job = result;
};
getResult = function() {
var results = [0, 0, 0];
var maior = -9999;
var iMaior = 0;
angular.forEach(self.userAnswers, function(answer) {
for (var i = 0; i < self.jobs.length; i++) {
results[i] += answer.values[i];
}
});
for (var i = 0; i < results.length; i++) {
var result = results[i];
if (result > maior) {
maior = result;
iMaior = i;
}
}
return iMaior;
};
}]);
あなたは何を試してみましたか?ポイントは各質問の 'values'属性に対応しているようですので、それらを「4,2,0」などに変更することができます。 – Polyov
「値:[4,4,4]」でAにしようとしました。オプションBを「値[2,2,2]」にする。 C "値:[0、0、0]"である。 私は合計を行い、条件に従って結果を返しません。 – Wendell
これは混乱します。プランナーデモが役に立ちます。また、コード自体に問題が特にどこにあるのか明確ではありません – charlietfl