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.
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.
Ho postato nella sezione sbagliata, non sono stato chiaro o ho chiesto la luna?
Help.
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
per entrambi:
http://javascript.internet.com/misce...ript-quiz.html
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
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?
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
modifica concodice:... else{ answerText=answerText+" \nCorrect! \n"; score++; } ...
e alla fine stampa la variabile punteggio. Ovviamente cambia il limite ciclo for in base al numero di domande che hai formulatocodice:else{ answerText=answerText+" \nCorrect! \n"; score++; punteggio += valorerisposta[i]; }
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
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
incodice: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++; } }
infine stampi la variabile punteggiocodice: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]]; }
(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)
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.
![]()
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>