Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Test/Questionario on line

    Devo creare un test on line.
    Ogni domanda ha 3 risposte.
    Io vorrei poi che alla fine il profilo lo calcolasse da solo.
    Chi sà indirizzarmi una guida veramente facile per costruirmelo, oppure passarmene uno da modificare.

  2. #2
    Ho postato nella sezione sbagliata, non sono stato chiaro o ho chiesto la luna?
    Help.

  3. #3
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Cmq, credo tu riesca a risolvere facendo un serie di form, option per poi calcolare i risultati con Javascript.

    Quindi guardati qualche guida per i form e in particolare le option, per poi, in base al checked delle option fai un risultato:

    <html>
    <head>
    <script language="javascript" type="text/javascript">
    <!--
    function valida(form) {
    chiediConferma = confirm('Sei sicuro dei dati immessi?');
    var v_uno=form.uno.selected;
    var v_due=form.due.selected;
    var v_tre=form.tre.selected;
    var v_quattro=form.quattro.selected;
    var v_cinque=form.cinque.selected;
    var v_sei=form.sei.selected;
    if (v_uno != form.uno.selected & v_due != form.uno.selected & v_tre != form.uno.selected) {
    alert ("Devi selezionare una opzione tra risposta 1-2-3!");
    return false;
    }
    else if (v_quattro != form.quattro.selected & v_cinque != form.cinque.selected & v_sei != form.sei.selected) {
    alert ("Devi selezionare una opzione tra risposta 4-5-6!");
    return false;
    }
    else { // QUI IL TUO JAVASCRIPT PER IL RISULTATO!
    if (v_uno & v_quattro) document.write("bravo!");
    if (v_due & v_quattro) document.write("bravino!");
    if (v_tre & v_quattro) document.write("bravetto!");
    if (v_uno & v_cinque) document.write("sufficiente!");
    if (v_due & v_cinque) document.write("quasi sufficiente!");
    if (v_tre & v_cinque) document.write("mediocre!");
    if (v_uno & v_sei) document.write("scarso!");
    if (v_due & v_sei) document.write("molto scarso!");
    if (v_tre & v_sei) document.write("scarsissimo!");
    }
    return false;
    }
    //-->
    </script>
    </head>

    <body>

    <form name="test" method="post" onSubmit="return valida(this);">
    Cosa rispondi?
    <OPTION SELECTED VALUE="">selezionare...</OPTION>
    <option name="uno" value="risposta1">risposta1</option>
    <option name="due" value="risposta2">risposta2</option>
    <option name="tre" value="risposta3">risposta3</option>

    Cosa rispondi?
    <OPTION SELECTED VALUE="">selezionare...</OPTION>
    <option name="quattro" value="risposta4">risposta4</option>
    <option name="cinque" value="risposta5">risposta5</option>
    <option name="sei" value="risposta6">risposta6</option>

    </form>

    </body>
    </html>


    Io sono un pivello dello script e sicuramente questo non funziona, ma potrebbe essere una buona base per iniziare!

    Ciao, spero di averti aiutato!;D

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Lo script mi è molto utile.
    Ogni domanda ne ha una solo corretta.
    Io vorrei attribuire ad ogni risposta per domanda un punteggio.

    domanda 1
    a)punti: 1
    b)punti: 3
    c)punti: 2

    domanda 2
    a)punti: 3
    b)punti: 1
    c)punti: 2
    ....

    Come potrei modificare lo script?

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    questo determina un punteggio per domanda esatta:

    ti crei un array di punteggi, dove l'indice rappresenta la domanda

    punteggio = 0;
    valorerisposta[1] = 5;
    valorerisposta[2] = 3;
    valorerisposta[3] = 10;
    ...
    valorerisposta[n] = 3;



    nella funzione score

    codice:
    ...
    else{
        answerText=answerText+" \nCorrect! \n";
        score++;
      }
    ...
    modifica con

    codice:
    else{
        answerText=answerText+" \nCorrect! \n";
        score++;
        punteggio += valorerisposta[i];
      }
    e alla fine stampa la variabile punteggio. Ovviamente cambia il limite ciclo for in base al numero di domande che hai formulato
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    per assegnare invece un punteggio per ogni risposta (risposte errate comprese, come vorresti) è necessario creare un array bidimensionale

    punteggio = 0;
    valorerisposta[1]['a'] = 5;
    valorerisposta[1]['b'] = 0;
    valorerisposta[1]['b'] = 3;

    valorerisposta[2]['a'] = 3;
    valorerisposta[2]['b'] = -5;
    valorerisposta[2]['c'] = 10;
    ...

    e la funzione va modificata qui

    codice:
    for(i=1;i<=5;i++){
       answerText=answerText+"\nQuestion :"+i+"\n";
      if(ans[i]!=yourAns[i]){
        answerText=answerText+"\nThe correct answer was "+ans[i]+"\n"+explainAnswer[i]+"\n";
      }
      else{
        answerText=answerText+" \nCorrect! \n";
        score++;
      }
    }
    in

    codice:
    for(i=1;i<=5;i++){
       answerText=answerText+"\nQuestion :"+i+"\n";
      if(ans[i]!=yourAns[i]){
        answerText=answerText+"\nThe correct answer was "+ans[i]+"\n"+explainAnswer[i]+"\n";
      }
      else{
        answerText=answerText+" \nCorrect! \n";
        score++;
       }
       punteggio = valorerisposta[i][yourAns[i]];
    }
    infine stampi la variabile punteggio

    (non ho provato il tutto ma dovrebbe ragionevolmente andare)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    potrebbe essere corretto se agisco nella form?
    Mi spiego:
    domanda 1
    a(<input type=radio name="q1" value="2" onClick="Engine(1, this.value)">a) From a can
    )
    b(<input type=radio name="q1" value="3" onClick="Engine(1, this.value)">a) From a can
    )
    c(<input type=radio name="q1" value="1" onClick="Engine(1, this.value)">a) From a can
    )

    Così poi posso sommare il valore delle risposte.
    Non sò se sono stato molto chiaro.

  9. #9
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Si certo...

  10. #10
    La variabile score(punteggio) ha all'interno tutti i punteggi delle risposte come valore test, quindi non me li somma.
    Come lo posso risolvere? Questo è lo script:

    <SCRIPT LANGUAGE="JavaScript">
    <!-- Begin
    var ans = new Array;
    var done = new Array;
    var yourAns = new Array;
    var explainAnswer = new Array;

    var score = 0;

    explainAnswer[1]="PRESSURE: very high and annoying\nMASTERY: nothing\nDEFINITION: situation of breathless time anxiety\n";
    explainAnswer[2]="PRESSURE: present but not excessive\nMASTERY: still insufficient\nDEFINITION: situation of blocked dissatisfaction\n";
    explainAnswer[3]="PRESSURE: nothing (disinterest )\nMASTERY: nothing ( no action)\nDEFINITION: comprise with clock\n";
    explainAnswer[4]="PRESSURE: present but not annoying \nMASTERY: real, but improvable\nDEFINITION: sorganized mastery\n";
    explainAnswer[5]="PRESSURE: very high, stressful \nMASTERY: perfect, total\nDEFINITION: situation of breathless time anxiety\n";

    function Engine(question, answer) {
    yourAns[question]=answer;
    }

    function Score(){
    var answerText = "How did you do?\n------------------------------------\n";
    //now score the user
    for(i=1;i<=30;i++)
    {
    score=score+yourAns[i];
    }

    if(score<=35){
    answerText=explainAnswer[1];
    }
    if(score>35 && score <40){
    answerText=answerText+explainAnswer[1]+'\n'+explainAnswer[2];
    }
    if(score>=40 && score <=50){
    answerText=answerText+explainAnswer[2];
    }
    if(score>50 && score <55){
    answerText=answerText+explainAnswer[2]+'\n'+explainAnswer[3];
    }
    if(score>=55 && score <=65){
    answerText=answerText+explainAnswer[3];
    }
    if(score>65 && score <70){
    answerText=answerText+explainAnswer[3]+'\n'+explainAnswer[4];
    }
    if(score>=70 && score <=80){
    answerText=answerText+explainAnswer[4];
    }
    if(score>80 && score <85){
    answerText=answerText+explainAnswer[4]+'\n'+explainAnswer[5];
    }
    if(score>=85){
    answerText=answerText+explainAnswer[5];
    }
    answerText=answerText+"SCORE: "+score;
    alert(answerText);

    }
    // End -->
    </script>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.