Bonjour tout le monde!!
Je débute en jquery, et un de mes premiers exercice consite à créé un quiz avec au démarrage un select html avec plusieurs option qui sont associer a un tableau. Au clique sur l'une des options je voudrais charger le tableau associer.
Voici le tableau:
Et ici le script qui gère le quizz:
Modifié par samba0 (22 Apr 2016 - 11:02)
      
      
    Je débute en jquery, et un de mes premiers exercice consite à créé un quiz avec au démarrage un select html avec plusieurs option qui sont associer a un tableau. Au clique sur l'une des options je voudrais charger le tableau associer.
Voici le tableau:
var niveaux = [
    {
        "title": "Niveau 1",
        "questions": [
            {
                "question" : "1: Originis exustus carnifex sexu convictus?",
                "image" : "",
                "choices" : [
                    "Originis exustus.",
                    "Originis exustus?",
                    "Originis exustus!"
                ],
                "correct" : "Originis exustus.",
                "explanation": "",
            },
            {
                "question" : "2: Vitae enim accepto anteferre praesertim mihi hodierno publicae?",
                "image" : "",
                "choices" : [
                        "Vitae enim accepto!!",
                        "Vitae enim accepto??",
                        "Vitae enim accepto"
                ],
                 "correct" : "Vitae enim accepto",
                 "explanation" : "",
            }
        ]
    },
    {
        "title": "Niveau 2",
        "questions": [
            {
                "question" : "1: Memineram tantum tantum non spectato pueris sed omittam?",
                "image" : "",
                "choices" : [
                    "Memineram tantum tantum.",
                    "Memineram tantum tantum!!?",
                    "Memineram tantum tantum!?"
                ],
                "correct" : "Memineram tantum tantum!?",
                "explanation": "",
            },
            {
                "question" : "2:  Ego nulla virtute vicissim consecutae ipso indigens?",
                "image" : "",
                "choices" : [
                        "Ego nulla virtute vicissim  [decu]",
                        "Ego nulla virtute vicissim [cligne]",
                        "Ego nulla virtute vicissim..."
                ],
                 "correct" : "Ego nulla virtute vicissim [cligne]",
                 "explanation" : "",
            }
        ]
    }
];
Et ici le script qui gère le quizz:
var currentquestion = 0,
	lvlQuestion = 0,
    score = 0,
    submt = true,
    picked;
var quiztitle = niveaux[lvlQuestion]['title'];
var quiz = niveaux[lvlQuestion]['questions'];
$(document).ready(function(){
$("#frame").hide();
$("#submitbutton").hide();
function htmlEncode(value) {
    return $('<div>').text(value).html();
}
function addChoices(choices) {
    if (typeof choices !== "undefined" && $.type(choices) == "array") {
        $('#choice-block').empty();
        for (var i = 0; i < choices.length; i++) {
            $('<li>').addClass('choice choice-box').attr('data-index', i).text(choices[i]).appendTo('#choice-block');
        }
    }
}
function nextQuestion() {
	if(lvlQuestion == 1){
  	$('<h1>').html(quiztitle)
  }
    submt = true;
    $('#explanation').empty();
    $('#question').text(quiz[currentquestion].question);
        if (quiz[currentquestion].hasOwnProperty('image') && quiz[currentquestion].image !== "") {
            if ($('#question-image').length === 0) {
                $(document.createElement('img')).addClass('question-image').attr('id', 'question-image').attr('src', quiz[currentquestion].image).attr('alt', htmlEncode(quiz[currentquestion].question)).insertAfter('#question');
            } else {
                $('#question-image').attr('src', quiz[currentquestion].image).attr('alt', htmlEncode(quiz[currentquestion].question));
            }
        } else {
            $('#question-image').remove();
        }
    addChoices(quiz[currentquestion].choices);
    setupButtons();
}
function processQuestion(choice) {
    currentquestion++;
    $("#submitbutton").hide();
    if (currentquestion == quiz.length) {
    		quiztitle = niveaux[1]['title'];
				quiz = niveaux[1]['questions'];
        endQuiz();
    }else{
    	nextQuestion();
    }
}
function setupButtons() {
    $('.choice').on('click', function () {
        choice = $(this).attr('data-index');
        $('.choice').removeAttr('style').off('mouseout mouseover');
            $(this).addClass('active');
            if (quiz[currentquestion].choices[choice] == quiz[currentquestion].correct) {
                $('.choice').eq(choice).css({
                    'background-color': '#50D943'
                });
                $('#explanation').html('<strong>VRAI !</strong> ' + htmlEncode(quiz[currentquestion].explanation));
                    score++;
            } else {
                $('.choice').eq(choice).css({
                    'background-color': '#FF0000'
                });
                $('#explanation').html('<strong>FAUX.</strong> ' + htmlEncode(quiz[currentquestion].explanation));
            }
            $("#submitbutton").show();
            if (submt) {
                submt = false;
                $('.choice').off('click');
                $(this).off('click');
                $('#submitbutton').css({
                    'color': '#fff'
                });
                $("#submitbutton").click(function(){
                    $('.choice').off('click', choice);
                    $(this).off('click');
                    processQuestion(choice);
                });
            }
    });
}
function endQuiz() {
    $('#explanation').empty();
    $('#question').empty();
    $('#choice-block').empty();
    $('#question').text("Vous avez " + score + " réponse(s) correcte(s) sur " + quiz[niveaux].length);
    lvlQuestion = 1;
    currentquestion = 0;
    $("#submitbutton").html('Niveau suivant').show();
    $("#submitbutton").click(function(){
        nextQuestion();
        $("#submitbutton").hide().html('Suivant');
    });
        
    var result = Math.round(score / quiz[niveaux].length * 100);
    var g = document.createElement('text');
    if(result < 33){
        $("#explanation").text("Décevant Tu as obtenu le niveau \"CANCRE\"");
    }
    else if(result < 50){
        $("#explanation").text("Peut mieux faire. Tu as obtenu le niveau \"FAIBLARD\"");
    }
    else if(result < 90){
        $("#explanation").text("Bravo !! Tu as obtenu le niveau \"TOP\"");
    }
    else if(result == 100){
        $("#explanation").text("Félicitation !!! Tu as obtenu le niveau \"CRAQUE\"");
    };
}
function init() {
    if (typeof quiztitle !== "undefined" && $.type(quiztitle) === "string") {
        $('<h1>').text(quiztitle).appendTo('#frame');
    } else {
        $('<h1>').text("Quiz").appendTo('#frame');
    }
    if (typeof quiz !== "undefined" && $.type(quiz) === "array") {
        $('<h2>').addClass('question').attr('id', 'question').text(quiz[0].question).appendTo('#frame');
        if (quiz[0].hasOwnProperty('image') && quiz[0].image !== "") {
            $('<img>').addClass('question-image').attr('id', 'question-image').attr('src', quiz[0].image).attr('alt', htmlEncode(quiz[0].question)).appendTo('#frame');
        }
            $('<p>').addClass('explanation').attr('id', 'explanation').html(' ').appendTo('#frame');
            $('<ul>').attr('id', 'choice-block').appendTo('#frame');
            addChoices(quiz[0].choices);
            $('<div>').addClass('choice-box').attr('id', 'submitbutton').text('Suivant').css({
                'font-weight': '700',
                'padding': '20px 0',
                'line-height': '5%',
                'background': 'none',
            }).appendTo('#frame');
            $("#submitbutton").hide();
              setupButtons();
        }
    }
    init();
});
[/i] Modifié par samba0 (22 Apr 2016 - 11:02)
 
  _laurent je t'engage pour mon prochain sitcom !
  Comme ça fait plaisir de lire ce genre de connerie le lundi de bon matin, tu as illuminé ma journée.