OVH Cloud OVH Cloud

Addition dans script...

15 réponses
Avatar
AM
Bonjour,

dans le script suivant, je n'arrive pas
a faire l'addition des valeurs de differents boutons radio...
Le resultat est la concatenation des 4 valeurs...

Ou est le bleme ?

<SCRIPT language="javascript">
function verifChoix(vote)
{
var valCase1 = 0;
var valCase2 = 0;
var valCase3 = 0;
var valCase4 = 0;
var sommeCase = 0;
if (vote.Case1[0].checked) { valLogo1 = vote.logo1[0].value; };
if (vote.Case1[1].checked) { valLogo1 = vote.logo1[1].value; };
if (vote.Case1[2].checked) { valLogo1 = vote.logo1[2].value; };
if (vote.Case1[3].checked) { valCase1 = vote.Case1[3].value; };

if (vote.Case2[0].checked) { valCase2 = vote.Case2[0].value; };
if (vote.Case2[1].checked) { valCase2 = vote.Case2[1].value; };
if (vote.Case2[2].checked) { valCase2 = vote.Case2[2].value; };
if (vote.Case2[3].checked) { valCase2 = vote.Case2[3].value; };

if (vote.Case3[0].checked) { valCase3 = vote.Case3[0].value; };
if (vote.Case3[1].checked) { valCase3 = vote.Case3[1].value; };
if (vote.Case3[2].checked) { valCase3 = vote.Case3[2].value; };
if (vote.Case3[3].checked) { valCase3 = vote.Case3[3].value; };

if (vote.Case4[0].checked) { valCase4 = vote.Case4[0].value; };
if (vote.Case4[1].checked) { valCase4 = vote.Case4[1].value; };
if (vote.Case4[2].checked) { valCase4 = vote.Case4[2].value; };
if (vote.Case4[3].checked) { valCase4 = vote.Case4[3].value; };

sommeCase = valCase1 + valCase2 + valCase3 + valCase4;
if (sommeVote != 10) { alert("Saisie incorrecte, veuillez
vérifier vos 4 votes !" + sommeCase) };
}
</SCRIPT>


Le resultat est sous la forme 1234....

Merci de vos conseils
Allan

5 réponses

1 2
Avatar
ASM
tu fais la même remarque qu'Elegie
pourtant AM a parlé de concaténation

il n'a jamais parlé d'addition ...


Subject :
*Addition* dans script...
Body :
dans le script suivant, je n'arrive pas
a faire *l'addition* des valeurs de differents boutons radio...
Le resultat est la *concatenation* des 4 valeurs...


Bon ... admettons ... si vous y tenez ... soit ...

Personne n'aurait une ou deux paires de lunettes à prêter ?

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


Avatar
Allo Tobus
Oui, je demandais bien a faire l'addition
pour verifier qu'une case etait cochée par bloc,
+ la somme = 10 pour qu'il n' y ait pas de case
de meme valeur cochée...

Pour les trucs bizarre de l'enoncé, j'avais fait
un rectificatif avec correction des erreurs...

Merci pour votre aide, c'est vrai que je ne suis
pas trop familiarisé avec le javascript et je l'utilise
trop rarement pour bien le maitriser....

AM

tu fais la même remarque qu'Elegie
pourtant AM a parlé de concaténation

il n'a jamais parlé d'addition ...


Subject :
*Addition* dans script...
Body :
dans le script suivant, je n'arrive pas
a faire *l'addition* des valeurs de differents boutons radio...
Le resultat est la *concatenation* des 4 valeurs...

JDÇJDR...



Avatar
AM
Bonjour,

Le bleme, c'est que j'ai besoin de valeurs differentes,
et que le fait d'additionner les valeurs de chaque choix
(qui doit être de 10), ne permet pas de s'affranchir de toutes
les possibilités...
car 2+2+3+3 = 10 ou 1+1+4+4 = 10 ou 3+3+3+1 = 10 ...etc...
Comment verifier que tous les choix des 4 groupes de boutons
soient bien differents ?
J'ai essayé de mettre a divers endroits de la boucle un flag:

if (choixVote[k] == choixVote[i]) { error++; }

avec des index differents suivant l'endroit, mais je n'arrive
pas a avoir la valeur 0 quand le vote est correcte...
Merci de votre collaboration.


voici donc le script final:

<SCRIPT language="javascript">
function verifChoix()
{
var k = 0;
var error =0;
var sommeVote = 0;
var choixVote = new Array();
var f = document.forms['vote'];
for(var i=1; i<5; i++)
{
var c = f.elements['case'+i];
for(var j=0; j<4; j++)
{
if(c[j].checked)
{
sommeVote = sommeVote + parseInt(c[j].value,10);
choixVote[k] = c[j].value;
k++;
}
}
}
if (choixVote.length<4) { alert('Un ou plusieurs votes ont été omis
!'); }
else if (sommeVote != 10) { alert('4 valeurs de vote non
differentes. Votre vote: ('+choixVote+')'); }
else { alert('Bravo ! vous avez voté : '+choixVote); }
}
</SCRIPT>
Avatar
Olivier Miakinen

Le bleme, c'est que j'ai besoin de valeurs differentes,
et que le fait d'additionner les valeurs de chaque choix
(qui doit être de 10), ne permet pas de s'affranchir de toutes
les possibilités...
car 2+2+3+3 = 10 ou 1+1+4+4 = 10 ou 3+3+3+1 = 10 ...etc...
Comment verifier que tous les choix des 4 groupes de boutons
soient bien differents ?


Si les valeurs ne peuvent être que 1, 2, 3 et 4 (ou 0 s'il n'a pas
encore choisi), tu peux vérifier que 2^v1 + 2^v2 + 2^v3 + 2^v4 2+4+8+16 = 30. Inutile de vérifier que v1+v2+v3+v4 = 10, ce sera
automatiquement le cas.

Avatar
AM
Merci, ça marche impec comme cela.
je savais qu'il y'avait quelque chose a faire
avec les valeurs numeriques des boutons, mais
n'avait pas pensé aux puissances, qui evitent
tout doublon de valeur de bouton...


AM


Le bleme, c'est que j'ai besoin de valeurs differentes,
et que le fait d'additionner les valeurs de chaque choix
(qui doit être de 10), ne permet pas de s'affranchir de toutes
les possibilités...
car 2+2+3+3 = 10 ou 1+1+4+4 = 10 ou 3+3+3+1 = 10 ...etc...
Comment verifier que tous les choix des 4 groupes de boutons
soient bien differents ?


Si les valeurs ne peuvent être que 1, 2, 3 et 4 (ou 0 s'il n'a pas
encore choisi), tu peux vérifier que 2^v1 + 2^v2 + 2^v3 + 2^v4 > 2+4+8+16 = 30. Inutile de vérifier que v1+v2+v3+v4 = 10, ce sera
automatiquement le cas.



1 2