Empecher la redondance de valeurs a l'affichahe.

Résolu
CosmicAline Messages postés 13 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 29 novembre 2012 - 1 févr. 2011 à 15:06
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 28 avril 2011 à 12:55
Hello

Je suis en train de me faire un petit utilitaire. Généralement tout fonctionne.
Par contre dans la liste des résultats j'ai plusieurs fois les mêmes valeurs qui reviennent, savez comment annuler cette affichage ?


Ci dessous le code:

<html>
<head>
<script type="Text/JavaScript">
function valider()
{
var valeur = document.choisir.animID;
var tmp="";
for (var i=0;i < valeur.length; i++)
{ if ( valeur[i].checked )
{ tmp+=""+valeur[i].value; }
}
document.getElementById('elmID').innerHTML=tmp;
}
</script>
</head>

<form id='choisir' name='choisir' method=get action="javascript:void(0);"onSubmit="valider(); return false;">
Tous les chiens

Labrador

Boxer

Tous les chats

Siamois





</form>
Votre choix ci-dessous




</html>




Comme résultat ca pourrait me donner ca:
cat=chien;scat=chien;cat=chien;scat=labrador;cat=chien;scat=boxer;
J'aurais besoin que cat=chien n'apparaisse qu'une fois.
J'ai pensé a changer les valeurs mais malheureusement si je coche que labrador j'ai cat=chien qui doit apparaitre...

Voilà j'ai un peu de mal là



++

4 réponses

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
1 févr. 2011 à 16:34
Bien le bonjour, j'ai bien une solution mais elle n'est pas des plus propres (à mon goût).

function valider()
{
var valeur = document.choisir.animID;
var tmp="";
for (var i=0;i < valeur.length; i++)
{ 
if ( valeur[i].checked ){ 
// découpage de la valeur obtenue:
// première chose, on supprime le ; à la fin.
var val =  valeur[i].value.substring(0, valeur[i].value.length-1);
// Maintenant on peu splitter la chaine de résultat en fonction de ;, on obtient un enregistrement du type: ["cat=chien", "scat=chien"]...
var splitValue = val.split(";"); 
// Parcours la liste splittée
for ( var j=0; j< splitValue.length; j++){
// Si la chaine de résultat ne contient pas la valeur en cours de test, on l'ajoute.
if ( tmp.indexOf (splitValue[j]) ==-1){
// Ajoute à la suite de la chaine.
tmp += splitValue[j]+";";
}
}
}
}
document.getElementById('elmID').innerHTML=tmp;
}


Mais cela réponds à la question.
je pense qu'il doit y avoir plus simple, mais je n'ai hélas pas beaucoup d'idée aujourd'hui...

[o-_-o]
3
CosmicAline Messages postés 13 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 29 novembre 2012
1 févr. 2011 à 18:28
Quoi, plus simple ???
Mais c'est PARFAIT !

merci merci !!


:)
0
CosmicAline Messages postés 13 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 29 novembre 2012
28 avril 2011 à 12:40
Salut :)

J'ai voulus ajouter une fonction mais je n'y parviens pas.
En fait je souhaiterais ajouter 3 checkbox.

Lorsque je coche une des checkbox celà remplace la "," par 'espace'and'espace'us=11,

A l'affichage ça donnerait:
Si rien n'est coché
cat=chien,scat=Boxer,scat=Labrador,

Si la première checkbox est cochée
cat=chien and us=11,scat=Boxer and us=11,scat=Labrador and us=11,

Si la deuxième checkbox est cochée
cat=chien and us=12,scat=Boxer and us=12,scat=Labrador and us=12,

Si la troisième checkbox est cochée
cat=chien and us=13,scat=Boxer and us=13,scat=Labrador and us=13,

Si les trois sont cochée
cat=chien and us=11 and us=12 and us=13,scat=Boxer and us=11 and us=12 and us=13,scat=Labrador and us=11 and us=12 and us=13,

Si vous avez une idée c'est bienvenue je sèche un peu là
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
28 avril 2011 à 12:55
Salut,

J'écris directement la soluce sous forme de code pour aller plus vite :
// soit output la variable qui contient ta chaîne non traitée
var output = "cat=chien,scat=...";
// on détermine les modifications à apporter
var forreplace = "";
// soit chk1, chk2 et chk3 tes 3 CheckBoxes
if (chk1.checked) forreplace += " and us=11";
if (chk2.checked) forreplace += " and us=12";
if (chk3.checked) forreplace += " and us=13";
// s'il existe bien des modif à apporter on transforme alors la chaîne
if (forreplace !"") output output.replace(/,/g, forreplace + ",");
0
Rejoignez-nous