Pour ta premiere question :
le javascipt va assez vite pour faire ses tests....mais bon, faut voir ce que ca donne avec des tests. D'apres ce que j'ai compris de ton code, tu etablis un cursus scolaire. Je sais pas si tu auras bcp de personnes qui ont fait 20 ans d'etudes . A tester
pour la deuxieme, j'ai fait une legere erreur. Type est une proprieté de ton element, tout comme name et value. Par exemple, pour un champ texte, son type sera text, son nom sera la valeur que tu as affecté à name, et value sera sa valeur.
Donc document.nom_form.elements[k].type donnera le type de l'objet (text, select, hidden...). C'est la que j'ai fait une erreur, c'est sur name que tu dois faire le test. Donc ce sera
document.nom_form.elements[k].name.lastIndexOf("annee"+i)!=-1
qu'il faudra tester. lastIndexOf permet de savoir si la chaine contenue dans les parentheses est inclue dans dans le nom de l'objet. si il existe, la valeur resultante sera differente de -1.
donc ce que j'ai ecrit ci dessus permet de savoir si l'objet s'appele annee suivi de l'indice. Ensuite, tu recuperes l'index comme tu a fait precedemment et tu le stockes dans une variable temporaire.
Apres, tu cherches "annee"+i+1, tu recuperes son index, et tu testes egalement. A la fin, tu compares. Il faudra peut etre que tu fasses attention à "annee"+i+1, afin qu'il ne cherche pas annee51 au lieu de annee6 par exemple. A ce moment la, tu effectues le calcul juste avant le test