Fonction javascript

Résolu
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -  
 nouvelle_informaticienne -
Bonjour
s'il vous plait je me permets de vous demander de l aide , j'ai ce script qui contient des fonctions javascript et qui font exactement la même chose c'est en faite la même fonction avec des arguments différents je veux bien rendre ce code une seule fonction avec des arguments et que je l’appelle a chaque fois pour mes différentes listes ! pouvez vous m'aider j'ai essaye mais je fais des erreurs car je ne suis pas habitue avec js et avec ses éléments getElementById .... je ne sais pas bien les utiliser
je vous remercie

function affiche3() {
 var selectBox = document.getElementById("partenaire"),i, span = document.getElementById('affiche3');
 span.innerHTML=''
for (i=0; i < selectBox.length; i++) 
{
 if (selectBox[i].selected) 
 {
  span.innerHTML += selectBox[i].innerHTML+'<br>';
 }
}
}

function recupere() {
 var selectBox = document.getElementById("partenaire"),i,span;
 for (i=0; i < selectBox.length; i++) 
{
 if (selectBox[i].selected) 
 {
   span.innerHTML += selectBox[i].value+'<br>';

}

}
return span
}

//encore
function affiche() {
 var selectBox = document.getElementById("responsables"),i, span = document.getElementById('affiche');
 span.innerHTML=''
for (i=0; i < selectBox.length; i++) 
{
 if (selectBox[i].selected) 
 {
  span.innerHTML += selectBox[i].innerHTML+'<br>';


 }
}
}

//encore
function affiche4() {
 var selectBox = document.getElementById("traitans"),i, span = document.getElementById('affiche4');
 span.innerHTML=''
for (i=0; i < selectBox.length; i++) 
{
 if (selectBox[i].selected) 
 {
  
  span.innerHTML += selectBox[i].innerHTML+'<br>';


 }
}
}

//encore
function affiche2() {
 var selectBox = document.getElementById("intervcic"),i, span = document.getElementById('affiche2');
 span.innerHTML=''
for (i=0; i < selectBox.length; i++) 
{
 if (selectBox[i].selected) 
 {
  span.innerHTML += selectBox[i].innerHTML+'<br>';
 }
}
}


NB je suis debutante en ce domaine merci a vous
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Il suffit de passer en paramètres les ID des éléments :
function affiche(idSelectBox,idSpan) {
 var selectBox = document.getElementById(idSelectBox);
 var span = document.getElementById(idSpan);
     span.innerHTML='';
 for (var i=0; i < selectBox.length; i++) {
   if (selectBox[i].selected){  
    span.innerHTML += selectBox[i].innerHTML+'<br>';
   }
 }
 return span;
}

1
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   3
 
merciiii bien Jordan pour votre , bonne journee
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Les deux changements entre tes fonctions sont les éléments appelés via getElementById. On peut donc factoriser ces fonctions en passant les deux éléments appelés en paramètres :
    // exemple de factorisation des fonctions afficheN
    function affiche(element1, element2) {
        var selectBox = document.getElementById(element1), i, span = document.getElementById(element2);
        span.innerHTML = '';
        for (i = 0; i < selectBox.length; i++)
        {
            if (selectBox[i].selected)
            {
                span.innerHTML += selectBox[i].innerHTML + '<br>';


            }
        }
    }
    
    // qui s'utilise donc comme ceci
    affiche('responsables', 'affiche');
    affiche('intervcic', 'affiche2');
    affiche('partenaire', 'affiche3');


Bonne journée,
1
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   3
 
:) je vous remerciiie bcp Pitet :) bonne journée
0
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   3
 
je reviens vers vous car mon code ne marche pas voila j'ai fais peut etre comme vous m'avez dit :
function affichett(element1,element2) {
 var selectBox = document.getElementById("element1"),i, span = document.getElementById('element2');
 span.innerHTML=''
for (i=0; i < selectBox.length; i++) 
{
 if (selectBox[i].selected) 
 {
  
  span.innerHTML += selectBox[i].innerHTML+'<br>';


 }
}
}


et puis pour l'appele de la fonction voila :


<tr>
   
      <td> <p style="border:1px solid black;background:#FFF; height:100%; width:100%; align:center">
<STRONG border="solid"  align="center" id="affiche3"></STRONG>
</P>
</td>
            <td><label for="partenaire" ><strong>Partenaires</strong></label></td>
            <td><select name="partenaire[]"  id="partenaire" onchange="affichett('partenaire','affiche3');" style="width:450px;" multiple="multiple" size="4" >



comme ca je vois tt est logique mais ca fonctionne pas !
je vous remercie encore une fois
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention  
 
Comme je te l'ai indiqué das un message précédent .... as tu regardé dans la console de ton navigateur ??
Moi je vois déjà au moins une erreur..... (de point virgule manquant).
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Attention à l'utilisation des paramètres :
var selectBox = document.getElementById("element1"),i, span = document.getElementById('element2');
-> on récupère ici les éléments dont l'identifiant est "element1" et "element2"

A corriger par :
var selectBox = document.getElementById(element1), i, span = document.getElementById(element2);
-> on récupère les éléments dont l'identifiant est la valeur des variables element1 et element2
0
nouvelle_informaticienne > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
bonsoir , vous avez raison MonsieurJordane il y a l'erreur du point virgule ! mais pour le truc de console je fais comment svp ? pouvez vous me rappelez de l'astuce ? psk c’était pas sur ce poste ! svp monsieur comment faire pour tester ? je vous remercie par avance, pour mon problème c'est bon est resolu mais je voulais savoir l'astuce de tester merci
0