Attribuer une valeur à un type radio en fonction de display, id, attributs de données
Bonjour tout le forum,
Je souhaite attribuer une valeur à des "type radio" s'ils sont affichés à l'écran et suivant le nombre d'affichés. C'est l'utilisateur qui choisit les colonnes qu'il souhaite afficher.
Code:
1 2 3 4 5 6 7 8
| <td data-ordre="1" style="display: none;" class="basF"><input type="radio" name="1" id="capacite1_1_2" value="1"/></td>
<td data-ordre="2" class="basF"><input type="radio" name="1" id="capacite1_1_3" value="2"/></td>
<td data-ordre="3" class="basF"><input type="radio" name="1" id="capacite1_1_4" value="3"/></td>
<td data-ordre="4" class="basF"><input type="radio" name="1" id="capacite1_1_5" value="4"/></td>
<td data-ordre="5" style="display: none;" class="basF"><input type="radio" name="1" id="capacite1_1_6" value="5"/></td>
<td data-ordre="6" class="basF"><input type="radio" name="1" id="capacite1_1_7" value="6"/></td>
<td data-ordre="7" style="display: none;" class="basF"><input type="radio" name="1" id="capacite1_1_8" value="7"/></td>
<td data-ordre="8" style="display: none;" class="basF"><input type="radio" name="1" id="capacite1_1_9" value="8"/></td |
Dans cet exemple, je dois attribuer :
- La valeur 0 au type radio de la colonne data-ordre="2"
Pour les autres, je dois répartir 8 points, comme ici il y a 3 autres colonnes.
- La valeur 8/3 au type radio de la colonne data-ordre="3"
- La valeur 16/3 au type radio de la colonne data-ordre="4"
- La valeur 24/3 au type radio de la colonne data-ordre="6"
Au moment où l'utilisateur sélectionne ses colonnes, je compte le nombre de colonnes affichées dans l'en-tête.
Code:
1 2 3 4 5 6 7 8 9
| function compterVisible() {
let nbCoche = 0;
for (let i = 1; i <= 8; i++) {
let celluleTh = document.querySelectorAll("th[data-ordre='" + i + "']");
if (celluleTh[0].style.display == "") {
nbCoche++;
}
}
} |
Je n'arrive pas à sélectionner le bon type radio et à lui attribuer la valeur.
Comment faire ? Utiliser querySelector ? getElementById ? getElementsByName ?
J'ai fait plusieurs tentatives sans succès.
Mon code complet ici
Merci pour votre aide.