if (provaScritta <= 0 && somma > 18) {
messaggio2.style.display = "block"; //bocciato
}
if(provaScritta <= 0 && provaPratica < 18){
messaggio2.style.display = "block"; //bocciato
}
if(provaScritta > 0 && somma < 18){
messaggio2.style.display = "block"; //bocciato
}
if(somma == 30 && provaScritta == 31 || somma == 30 && provaScritta == 32){
risultato.innerHTML="Promosso con 30 e lode! " + somma;
messaggio1.style.display = "block"; //promosso
}
else{
messaggio1.style.display = "block"; //promosso
}
Questa sequenza logica non mi convince. E si presta a.. problemi. Ora, io non so... quali valori possono assumere provaScritta , provaPratica, somma.
Fatto stà che mi domando: "somma" può essere solo minore di 18 oppure maggiore? Se fosse esattamente 18 il caso non sarebbe "coperto".
Poi mi pare ci siano logiche ridondanti dietro quei tanti if e ripetizioni. Non possono, in fondo, essere sommarizzate:
if (provaScritta <= 0 || somma <18)
{
messaggio2.style.display = "block"; //bocciato
}
/* in fondo se provaScritta è minore o uguale a zero si sarà comunque bocciati, idem se somma è minore di 18 , o no? Se così fosse ti sei condensato 3 if in 1. */
E la parte sotto: che senso ha ripetere somma=30 nelle due condizioni e che senso ha mettere == 30 Oppure == 31.. quando puoi mettere >= 31 e contemplare entrambi i casi?
if(somma==30 && provaScritta >= 31){
risultato.innerHTML="Promosso con 30 e lode! " + somma;
messaggio1.style.display = "block"; //promosso
}
else{
messaggio1.style.display = "block"; //promosso
}