2 votes

L'itération à travers des groupes de radios spécifiques uniquement, au sein d'un ensemble plus large de groupes de radios.

J'ai un formulaire comportant 26 questions, qui ont toutes des groupes de boutons radio comme choix de réponse pour l'utilisateur (il calcule le facteur de risque pour une espèce végétale envahissante spécifique sur une propriété donnée). À la fin, la valeur sélectionnée dans chaque groupe de boutons radio est additionnée.

Ce qui complique les choses, c'est que l'utilisateur a la possibilité de remplir le questionnaire pour 5 espèces de plantes envahissantes différentes ; en d'autres termes, j'ai 26 lignes et 5 colonnes, et à la fin, je dois comptabiliser chaque colonne séparément. Pour ce faire, j'ai utilisé getElementsByClassName, et cela fonctionne à merveille dans Firefox, mais pas dans IE. Malheureusement, le client pour lequel je fais ce travail utilise IE comme norme d'utilisation. J'ai essayé un certain nombre de fonctions génériques getElementsByClassName affichées sur le Web, mais elles ne semblent pas fonctionner ; j'obtiens toujours Error on Page.

La fonction réussie dans Firefox est la suivante :

function addSpecies1(frm, resultHolder)
{
var elems = frm.getElementsByClassName('species1'),
calculator = elems.length,
total = 0;
for(var i=0; i<calculator; i++)
if(elems[i].type=='radio' && elems[i].checked  && !isNaN(elems[i].value))
total+=parseFloat(elems[i].value);
resultHolder.value=total;
}

Il y a probablement une réponse très simple (je suis un débutant !) mais je me tape la tête contre le mur depuis plus d'une semaine...

1voto

Vinay B R Points 5026

La meilleure et la plus simple des choses à faire serait d'utiliser jquery . cela permet de résoudre la plupart des problèmes liés aux différents navigateurs. vous pouvez faire un getElementsByClassName en utilisant $('.species1') .

Si vous ne voulez pas utiliser jquery vous pouvez utiliser l'extrait de code suivant

var inputs = document.getElementsByTagName('INPUT');
var inputlen = inputs.length;
var result = new Array();

for(var i=0;i<inputlen;i++)
{
   if( inputs[i].className == 'species1' && input.checked)
      result.push(inputs[i]);
}

Le résultat contient tous les cases à cocher sélectionnées avec la classe species1 . vous pouvez également utiliser la boucle pour obtenir les vérifications.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X