Bonjour,
J'ai deux fonctions qui font exactement la même chose mais pour des attributs de données différents. Je voudrais simplifier ce code en une seule fonction et m'assurer que mon code ne se répète pas. J'ai pensé à mettre mes différents attributs de données dans un tableau, puis exécuter ma fonction sur chaque élément du tableau, mais je ne sais pas vraiment comment le faire. La fonction doit calculer des moyennes. Merci d'avance pour vos réponses. Voici le code:
HTML:
<tr>
<td><input type="text" value="IT"></td>
<td><input class='tot0' type="number" value="6"></td>
<td><input data-eleve="A" data-cours="1" class="note_m note noteE" type="number"></td>
<td><input data-eleve="B" data-cours="1" class="note noteE" type="number"></td>
<td><input data-cours="1" class="meCours" type="number"></td>
<td><input class="AveragePerCourse color" type="number"></td>
</tr>
<tr>
<td><input type="text" value="Français"></td>
<td><input class='tot0 tot2' type="number" value="6"></td>
<td><input data-eleve="A" data-cours="2" class="note_m noteE" type="number"></td>
<td><input data-eleve="B" data-cours="2" class="noteE" type="number"></td>
<td><input data-cours="2" class="meCours" type="number"></td>
<td><input class="AveragePerCourse color" type="number"></td>
</tr>
<tr>
<td><input type="text" value="Allemand"></td>
<td><input class='tot0 tot3' type="number" value="8"></td>
<td><input data-eleve="A" data-cours="3" class="note_m noteE" type="number"></td>
<td><input data-eleve="B" data-cours="3" class="note3 noteE" type="number"></td>
<td><input data-cours="3" class="meCours" type="number"></td>
<td><input class="AveragePerCourse color" type="number"></td>
</tr>
<tr>
<td><input type="text" value="Bio"></td>
<td><input class='tot0 tot4' type="number" value="20"></td>
<td><input data-eleve="A" data-cours="4" class="note_m noteE" type="number"></td>
<td><input data-eleve="B" data-cours="4" class="note4 noteE" type="number"></td>
<td><input data-cours="4" class="meCours" type="number"></td>
<td><input class="AveragePerCourse color" type="number"></td>
</tr>
<tr>
<td><input type="text" value="moyenne"></td>
<td><input class="tot" type="number"></td>
<td><input type="number" data-eleve="A" class="moyenne"></td>
<td><input type="number" data-eleve="B" class="moyenne"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td><input class="pourcent color" type="number"></td>
<td><input class="pourcent color" type="number"></td>
<td></td>
</tr>
SCRIPT / JQUERY:
$("input.moyenne[data-eleve]").each((i, eleve) => {
let eleveIndex = $(eleve).data("eleve");
let total = 0;
$("input.noteE[data-eleve='" + eleveIndex + "']").each((n, note) => {
total += parseFloat($(note).val());
});
$(eleve).val(total/$('input.note_m').length);
});
$("input.meCours[data-cours]").each((i, cour) => {
let courIndex = $(cour).data("cours");
let total = 0;
$("input.noteE[data-cours='" + courIndex + "']").each((n, note) => {
total += parseFloat($(note).val());
});
$(cour).val(total/$('input.note').length);
console.log(total)
});
EDIT : Déplacement du sujet dans le forum JAVASCRIPT
EDIT² : Ajout des
BALISES DE CODE