Ciao,

ho realizzato questo quiz o questionario (per i ragazzi a scuola) in javascript con l'uso del prompt. Come potete vedere nella parte nascosta del codice della funzione 008 si può dare una risposta verde se corretta o rossa se errata. Con l'inclusione delle ancore posso far scorrere la pagina sul video. Vorrei implementare degli alert che impediscano di procedere se non inseriscono ad esempio il nome, ma non riesco. Inoltre è possibile ridurre il codice eliminando le parti ridondanti?

p.s. le domande e le risposte sono improvvisate.

Grazie.

codice:
<html>
<head>
<script type="text/javascript">

var no_r= "Non hai risposto alla domanda.";
var bo_r= "Non sei stato in grado di rispondere a questa domanda.";
var r_no= "Risposta corretta: non disponibile.";
var r_si= "Risposta corretta: ";

var d_01= "Quali sono i vari gradi della sezione aurea?";
var r_01= "20 sul lato gradiente ma infiniti sul lato pari.";

var d_02= "Per quale motivo ritieni che l'arte sia importante?";
var r_02= "Perch&egrave; l'arte sviluppa il senso estetico della vita.";

var d_03= "Quanti sono i colori primari?";
var r_03= "3";

var d_04= "In che anno viene dipinta l'ultima cena?";
var r_04= "1454";

var d_05= "In quale anno (d.C. dopo Cristo) cade l'Impero Romano d'Occidente? 456, 367, 476, 567";
var r_05= "476";

var d_06= "Come si chiamava Van Gog?";
var r_06= "Vincent";

var d_07= "Chi ha disegnato il ritratto chiamato Monna Lisa?";
var r_07= "Leonardo da Vinci";

var d_08= "In quale museo è conservato il quadro chiamato Monna Lisa?";
var r_08= "Louvre";

function inizio() {
document.write ("<body style=\"padding: 10px;\">");
document.write ("<font style=\"font: normal 14px verdana; color: RGB(100,100,100);\">");
document.write ("<H2>ArtE di marthasand</H2>");
document.write (dateFormat(Date(), 'dd mmmm yyyy '));
document.write ("

VERIFICA ON LINE DI ARTE");
document.write ("

TEMA: Il gesto e il segno.

<HR>

");
}

function dati() {
var nome=prompt("Per favore inserisci il tuo nome","")
document.write ("NOME: " + nome + " | ");
var scuola=prompt("Per favore inserisci la tua scuola","")
document.write ("SCUOLA: " + scuola + " | ");
var classe=prompt("Per favore inserisci la tua classe","")
document.write ("CLASSE: " + classe + "

<HR>");
alert ("Adesso inizia la sequenza di domande.");
}

function a001() {
var a001 = window.prompt(d_01);
if (a001=="") {
document.write ("

" + d_01 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a001==null) {
document.write ("

" + d_01 + "

" + bo_r + "

" + r_no + "<HR>");
}
else {
document.write ("

" + d_01 + "

" + a001 + "

" + r_si + "" + r_01 + "<HR>");
}
}

function a002() {
var a002 = window.prompt(d_02);
if (a002=="") {
document.write ("

" + d_02 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a002==null) {
document.write ("

" + d_02 + "

" + bo_r + "

" + r_no + "<HR>");
}
else {
document.write ("

" + d_02 + "

" + a002 + "

" + r_si + "" + r_02 + "<HR>");
}
}

function alert001() {
alert ("Le prossime domande necessitano di una risposta precisa.");
}

function a003() {
var a003 = window.prompt(d_03);
if (a003=="") {
document.write ("

" + d_03 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a003==null) {
}
else {
document.write ("

" + d_03 + "

" + a003 + "

" + r_si + "" + r_03 + "<HR>");
}
}

function a004() {
var a004 = window.prompt(d_04);
if (a004=="") {
document.write ("

" + d_04 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a004==null) {
document.write ("

" + d_04 + "

" + bo_r + "

" + r_no + "<HR>");
}
else {
document.write ("

" + d_04 + "

" + a004 + "

" + r_si + "" + r_04 + "<HR>");
document.write ("<a name=\"004\">");
window.location.href="#004";
}
}

function a005() {
var a005 = window.prompt(d_05);
if (a005=="") {
document.write ("

" + d_05 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a005==null) {
document.write ("

" + d_05 + "

" + bo_r + "

" + r_no + "<HR>");
}
else {
document.write ("

" + d_05 + "

" + a005 + "

" + r_si + "" + r_05 + "<HR>");
document.write ("<a name=\"005\">");
window.location.href="#005";
}
}

function a006() {
var a006 = window.prompt(d_06);
if (a006=="") {
document.write ("

" + d_06 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a006==null) {
document.write ("

" + d_06 + "

" + bo_r + "

" + r_no + "<HR>");
}
else {
document.write ("

" + d_06 + "

" + a006 + "

" + r_si + "" + r_06 + "<HR>");
document.write ("<a name=\"006\">");
window.location.href="#006";
}
}

function a007() {
var a007 = window.prompt(d_07);
if (a007=="") {
document.write ("

" + d_07 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a007==null) {
document.write ("

" + d_07 + "

" + bo_r + "

" + r_no + "<HR>");
}
else {
document.write ("

" + d_07 + "

" + a007 + "

" + r_si + "" + r_07 + "<HR>");
document.write ("<a name=\"007\">");
window.location.href="#007";
}
}

function a008() {
var a008 = window.prompt(d_08);
if (a008=="") {
document.write ("

" + d_08 + "

" + no_r + "

" + r_no + "<HR>");
}
else if (a008==null) {
document.write ("

" + d_08 + "

" + bo_r + "

" + r_no + "<HR>");
}
/*else if (a008=="Louvre") {
document.write ("

" + d_08 + "<P style=\"color: green\">" + a008 + "

" + r_si + "" + r_08 + "<HR>");
}
else {
document.write ("

" + d_08 + "<P style=\"color: red\">" + a008 + "

" + r_si + "" + r_08 + "<HR>");
document.write ("<a name=\"008\">");
window.location.href="#008";
}*/
else {
document.write ("

" + d_08 + "

" + a008 + "

" + r_si + "" + r_08 + "<HR>");
document.write ("<a name=\"008\">");
window.location.href="#008";
}
}

function chiudi() {
document.write ("

La verifica è terminata stampala e portala a scuola.

");
document.write ("<A HREF=\"#\">torna su</A> | ");
document.write ("<A HREF=\"javascript:print();\">stampa</A> | ");
document.write ("<A HREF=\"javascript:window.location.reload(true);\">cancella</A>");
document.write ("</font>");
}
</script>

</head>

<body STYLE="margin: 10px; font: normal 14px verdana; color: RGB(100,100,100);">
<H2>VERIFICA DI ARTE ON LINE</H2>
<H3>Istruzioni per un corretto svolgimento della verifica</H3>
<H4>Segui le indicazioni della finestra di dialogo, leggendo attentamente le domande: alcune risposte prevedono una risposta libera espressa con le tue parole, in seguito ti 
viene indicata la risposta corretta, in altri casi si prevede una risposta precisa come ad esempio date e nomi.

 Anche se ritieni di non essere sicuro, rispondi comunque, se 
proprio non sai la risposta, clicca sul pulsante Annulla e procedi con il questionario.</H4>
<H4>La verifica è assolutamente anonima e non viene registrata, anche se puoi stampare il risultato per tuo piacere personale, inoltre non ha valore nel giudizio scolastico.</H4>
<H4>Clicca sul pulsante qui sotto per iniziare.</H4>

<input type="button" onclick=" inizio(); dati(); a001(); a002(); alert001(); a003(); a004(); a005(); a006(); a007(); a008(); chiudi();" value="Inizia la verifica">

<script>
function lz(numero, cifre) {
	n = String(numero);
	while (n.length<cifre) { 
		n="0"+n 
	}
	return n;
}
function dateFormat(data, formato) { 
// (c) br1 - 2002 

	var giorni = new Array("Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato");
	var mesi = new Array("Gennaio","Febbraio","marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");

// preparo la data...  verificare di passarla corretta!
	var adesso = new Date(data); 
	var anno = adesso.getFullYear();
	var mese = adesso.getMonth()+1;
	var giorno = adesso.getDate();
	var settim = adesso.getDay()
	var ore = adesso.getHours()
	var minuti = adesso.getMinutes()
	var secondi = adesso.getSeconds()

// preparo la stringa di risposta
	var rVal = '';

	if (formato.length==0) { 
// assenza del secondo parametro
		return String(adesso); 
	} else {

	// inizio loop
		while (formato.length>0) {

	// verifico se c'e' qualche separatore e lo aggiungo
			while (formato.length>0 && String("ymdphnst").indexOf(formato.charAt(0).toLowerCase())<0) {
				rVal += formato.charAt(0);
				formato = formato.substr(1);
			}


	// Separo il gruppo
			if (formato.length>0) {
				ff = formato.charAt(0);
				formato = formato.substr(1);
				while (formato.length>0 && formato.charAt(0).toLowerCase()==ff.charAt(0).toLowerCase()) {
					ff += formato.charAt(0);
					formato = formato.substr(1);
				}

	// espando il formato nella stringa corrispondente
				ff = ff.toLowerCase();	 // operazione preliminare... tutto in minuscolo
				switch (ff) 	{ 
					case "yy" : 
						rVal += String(anno).substr(2); 
						break; 
					case "yyyy" : 
						rVal += String(anno); 
						break; 
					case "m" : 
						rVal += String(mese); 
						break; 
					case "mm" : 
						rVal += lz(mese,2);
						break; 
					case "mmm" : 
						rVal += mesi[mese-1].substr(0,3);
						break; 
					case "mmmm" : 
						rVal += mesi[mese-1];
						break; 
					case "d" : 
						rVal += String(giorno); 
						break; 
					case "dd" : 
						rVal += lz(giorno,2); 
						break; 
					case "ddd" : 
						rVal += giorni[settim].substr(0,3);
						break; 
					case "dddd" : 
						rVal += giorni[settim];
						break; 
					case "p" : 
						var inizio = new Date(anno, 0, 0); 
						rVal += Math.floor((adesso - inizio) / 86400000);
						break; 
					case "ppp" : 
						var inizio = new Date(anno, 0, 0); 
						rVal += lz(Math.floor((adesso - inizio) / 86400000),3);
						break; 
					case "h" : 
						rVal += String(ore); 
						break; 
					case "hh" : 
						rVal += lz(ore,2); 
						break; 
					case "n" : 
						rVal += String(minuti); 
						break; 
					case "nn" : 
						rVal += lz(minuti,2); 
						break; 
					case "s" : 
						rVal += String(secondi); 
						break; 
					case "ss" : 
						rVal += lz(secondi,2); 
						break; 
					case "t" : 
						rVal += lz(ore,2)+":"+lz(minuti,2)+":"+lz(secondi,2); 
						break; 
					default :  // il numero dei caratteri del formato non e' permesso
						rVal += ff.replace(/./gi,"?");
				} 

			}

		} // fine loop principale

		return rVal;
	}
} 
</script>
</body>

</html>