Modification de l'affichage des scores aux quiz en javascript

Bonjour,

Je me permets de vous contacter car je souhaiterais remplacer l’affichage des résultats aux quiz (actuellement en % de bonnes réponses) de la génération Web et Scorm d’un module Topaze par un affichage en points (/1 pour être plus précise).

J’ai essayé via le fichier skin.js de la charte et j’obtiens un résultat encourageant. En effet, je récupère les div qui contiennent respectivement chaque question (.quizBk) et je parcours chaque div pour modifier le script qu’elle contient via “innerHTML.replace” (par exemple, je remplace “% de bonnes réponses” par “/ 1”).
Cela fonctionne dans le code du module généré (le script est bien modifié) mais ça ne se répercute pas à l’affichage.

Je suis sûre de faire les modifications qu’il faut au bon endroit car si je les fais directement dans le script de la div.quizBk du fichier html généré, l’affichage se fait bien.

Sauriez-vous me dire ce qu’il me manque pour que l’affichage se fasse dynamiquement ? skin.js est-il exécuté trop tardivement ?

Vous remerciant
Cordialement,

Camille

PS : mon code ci-dessous
var mesQuiz = document.getElementsByClassName(“quizBk”);
for (var i=0; i<mesQuiz.length; i++){
mesQuiz[i].innerHTML = mesQuiz[i].innerHTML.replace(/% de bonnes réponses/g, ‘/ 1’);
mesQuiz[i].innerHTML = mesQuiz[i].innerHTML.replace(/ * 100/g, ’ 1’);
console.log(mesQuiz[i]);
};

Bonjour Camille,

Au contraire, le code de skin.js est appelé trop tôt, donc le score a remplacer n’existe pas encore au moment de le remplacer. Voila une proposition de solution, on associe le code à l’événement “window.onload” pour s’assurer que le chargement de la page est terminé lorsqu’il s’exécute :

// Skin-specific Javascript code.

var topazeReplaceLoad=window.onload;

window.onload = function() {
    topazeReplaceLoad();
    var mesQuiz = document.getElementsByClassName("quizBk");
    for (var i=0; i<mesQuiz.length; i++) {
        mesQuiz[i].innerHTML = mesQuiz[i].innerHTML.replace(/% de bonnes réponses/g, '\/ 1');
        mesQuiz[i].innerHTML = mesQuiz[i].innerHTML.replace(/ * 100/g, ' 1');
        console.log(mesQuiz[i]);
    }
}

a+

Stéphane

Attention, window.onload est réservé par SCENARI !
Il est plus propre de s’insérer dans le système de chargement mis en place par SCENARI:

scOnLoads.push({
    onLoad : function() {
        var mesQuiz = document.getElementsByClassName("quizBk");
        for (var i=0; i&lt;mesQuiz.length; i++) {
            mesQuiz[i].innerHTML = mesQuiz[i].innerHTML.replace(/% de bonnes réponses/g, '\/ 1');
            mesQuiz[i].innerHTML = mesQuiz[i].innerHTML.replace(/ * 100/g, ' 1');
            console.log(mesQuiz[i]);
        }
    },
    loadSortKey:"ZZZZ"
});

Bonjour,
Merci à tous les deux pour ces méthodes qui m’ont permis d’atteindre mon objectif!
Cordialement

Camille