1

こんにちは、私はjQueryクイズを作ろうとしていますが、彼らがすべての答えに答えると、次のように表示されます: 質問1は偽です 質問2は真です

次のように変更する方法はありますか: 質問 1 は正しい 質問 2 は間違っています

それとも、これは不可能ですか?

ここにクイズがあります: http://jsfiddle.net/trickedgaming/AJ4mj/

    $(function () {
/*jshint laxcomma:true */ (function ($) {

    function _range(min, max, rand) {
        var arr = (new Array(++max - min))
            .join('.').split('.')
            .map(function (v, i) {
            return min + i;
        });
        return rand ? arr.map(function (v) {
            return [Math.random(), v];
        })
            .sort().map(function (v) {
            return v[1];
        }) : arr;
    }

    $.fn.shuffle = function () {
        return this.each(function () {
            var $this = $(this),
                children = $this.children(),
                rand = _range(0, children.length - 1, true).map(function (el) {
                    return children[el];
                });
            if (children.length) $(rand).appendTo($this);
        });
    };

}(jQuery));

$('ul').shuffle();
var jQuiz = {
    answers: {
        q1: 'd',
        q2: 'c',
        q3: 'a',
        q4: 'd',
        q5: 'a'
    },
    questionLenght: 5,
    checkAnswers: function () {
        var arr = this.answers;
        var ans = this.userAnswers;
        var resultArr = []
        for (var p in ans) {
            var x = parseInt(p) + 1;
            var key = 'q' + x;
            var flag = false;
            if (ans[p] == 'q' + x + '-' + arr[key]) {
                flag = true;
            } else {
                flag = false;
            }
            resultArr.push(flag);
        }
        return resultArr;
    },
    init: function () {
        $('.btnNext').click(function () {
            if ($('input[type=radio]:checked:visible').length == 0) {

                return false;
            }
            $(this).parents('.questionContainer').fadeOut(500, function () {
                $(this).next().fadeIn(500);
            });
            var el = $('#progress');
            el.width(el.width() + 120 + 'px');
        });
        $('.btnPrev').click(function () {
            $(this).parents('.questionContainer').fadeOut(500, function () {
                $(this).prev().fadeIn(500)
            });
            var el = $('#progress');
            el.width(el.width() - 120 + 'px');
        })
        $('.btnShowResult').click(function () {
            var arr = $('input[type=radio]:checked');
            var ans = jQuiz.userAnswers = [];
            for (var i = 0, ii = arr.length; i < ii; i++) {
                ans.push(arr[i].getAttribute('id'))
            }
        })
        $('.btnShowResult').click(function () {
            $('#progress').width(300);
            $('#progressKeeper').hide();
            var results = jQuiz.checkAnswers();
            var resultSet = '';
            var trueCount = 0;
            for (var i = 0, ii = results.length; i < ii; i++) {
                if (results[i] == true) trueCount++;
                resultSet += '<div> Question ' + (i + 1) + ' is ' + results[i] + '</div>'
            }
            resultSet += '<div class="totalScore">True= Correct Answer<br />False= Wrong Answer<br /><br />Your total score is ' + trueCount * 1 + ' / 10</div>'
            $('#resultKeeper').html(resultSet).show();
        })
    }
};
jQuiz.init();

}))

4

4 に答える 4

1

こんにちは、コードに変更を加えました: コードを参照してください

93行目を次のように変更

   var qStatus="Wrong";
   if (results[i] == true) {trueCount++; qStatus="Correct";}
   resultSet += '<div> Question ' + (i + 1) + ' is ' + qStatus + '</div>'
于 2013-03-30T09:28:16.893 に答える
1

はい、それはとても簡単です。

JSFIDDLEを更新し、次の変更を加えました。

 if (results[i] == true) {
                        resultSet += '<div> Question ' + (i + 1) + ' is ' + ' correct ' + '</div>';
                    } else {
                        resultSet += '<div> Question ' + (i + 1) + ' is ' + ' wrong ' + '</div>';
                    }
于 2013-03-30T09:25:03.807 に答える
1

resultSetに基づいて、正しいステートメントを追加するだけですresults[i]

if (results[i] == true) {
    trueCount++;
    resultSet += '<div> Question ' + (i + 1) + ' is correct' + '</div>';
} else {
    resultSet += '<div> Question ' + (i + 1) + ' is wrong' + '</div>';
}

更新されたデモ: http://jsfiddle.net/AJ4mj/3/

于 2013-03-30T09:26:09.037 に答える
1

if-elseブロックを介して変更するだけです。

デモ

if (results[i] == true){
    trueCount++;
    resultSet += '<div> Question ' + (i + 1) + ' is Correct</div>';
}else 
    resultSet += '<div> Question ' + (i + 1) + ' is incorrect </div>';

PS

;必要に応じてステートメントを終了してください。私はあなたが最後の声明を見ていない;

于 2013-03-30T09:26:42.707 に答える