Ok mi sembra piuttosto solido così o quantomeno mi sembra che rispetti tutti i requisiti.
vedi se ti va bene (è in XHTML di preciso, se non lo avete affrontato dimmi che ti posto la versione più spartana in HTML, cmq poca differenza):
Codice HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><title>Esercizio: Calcolo della Media</title>
<head>
<script type="text/javascript">
var CMD_END = 'end';
var DIGITS = '0123456789';
var num_inseriti = new Array();
var cmd_prec = '';
function controlla(campo){
var cmd = campo.value;
if (!numerico(cmd) && !controllaEnd(cmd)){
alert('Carattere non valido!');
campo.value = cmd_prec;
}else
cmd_prec = cmd;
}
function conferma(){
var campo = document.frm1.cmd;
if (campo.value == CMD_END){
if (num_inseriti.length < 2){
alert("Aggiungere almeno 2 numeri per la media!");
return;
}
var conf = confirm("Confermi di terminare l'inserimento valori e mostrare i risultati?");
if (conf)
risultato();
}else{
num_inseriti[num_inseriti.length] = campo.value;
alert('OK, aggiunto il valore n°'+num_inseriti.length);
campo.value = '';
cmd_prec = '';
campo.focus();
}
}
function risultato(){
var divr = document.getElementById('divrisultato');
if (divr){
var ris = '<table>';
var rigainiz = '<tr><td>';
var rigafine = '</td></tr>';
var s = 0;
for (var i=0;i<num_inseriti.length;i++){
ris += rigainiz + num_inseriti[i] + rigafine;
s += parseInt(num_inseriti[i]);
}
var media = s / num_inseriti.length;
ris += rigainiz + '<hr />' + rigafine + rigainiz + media + rigafine;
divr.innerHTML = ris+'</table>';
}
}
function controllaEnd(cmd){
return CMD_END.substr(0, cmd.length) == cmd;
}
function numerico(val){
for (var i=0;i<val.length;i++){
if ( DIGITS.indexOf(val.charAt(i))<0 )
return false;
}
return true; //ok anche se stringa vuota
}
</script>
</head>
<body>
<form name="frm1" onsubmit="conferma(); return false;">
Inserisci un numero o il comando 'end': <br />
<input type="text" name="cmd" value="" onkeyup="controlla(this)" />
<input type="submit" value=" OK " /> <br />
<div id="divrisultato" style="padding:10px;"></div>
<input type="button" value=" Riavvia " onclick="window.location.reload()" />
</form>
</body>
</html>