IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

chargement de liste dans le onload


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut chargement de liste dans le onload
    bonjour,
    je voudrais réutiliser une fonction x fois au chargement afin de créer et remplir dynamiquement des listes. ma contrainte est de n'avoir qu'un seul fichier html.
    donc j'écris les scripts dans le head et je mets un evenement onload dans le body de la page mais ca ne marche pas car les listes ne sont pas encore créees. voici mon exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type="text/javascript">
    function ajout(listeDep){
        var annee = 2004;
    	for (var i=1 ; i <= 11 ; i++) {
    		var monOption = document.createElement('option');
    		monOption.text = annee + i;
    		monOption.value = annee + i;
    		listeDep.options[i] = monOption;
    	}
     
    }
    </script>
    les listes sont dans différents endroits de la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select id="Danneer" >
     
    </select>
    Lorsque je mets le script après la liste dans le body cela fonctionne mais je suis obligé de le répéter a chaque fois.
    comment faire autrement
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function ajout(listeDep){
        var annee = 2004;
    	for (var i=1 ; i <= 11 ; i++) {
    		var monOption = document.createElement('option');
    		monOption.text = annee + i;
    		monOption.value = annee + i;
    		listeDep.appendChild(monOption);
    	}
     
    }

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function ajout(listeDep)
    listeDep, c'est quoi ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    listeDep c'est le nom de liste qui va etre construite
    malgres la modif cela ne marche toujours pas.
    je mets le body
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="ajout(Dannee)">
    et la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select id="Dannee"  >
     
    </select>
    en faite j'ai une erreur au niveau du onload. variable Dannee non defini.
    bien sur la liste est imbriqué dans des div et un form

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="ajout(Dannee)">
    Là, Dannee est une variable (à priori non initialisée donc égale à undefined), apparemment, tu souhaites passer le texte Dannee, donc c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="ajout('Dannee')">
    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function ajout(listeDep){
        var annee = 2004;
    	for (var i=1 ; i <= 11 ; i++) {
    		var monOption = document.createElement('option');
    		monOption.text = annee + i;
    		monOption.value = annee + i;
    		listeDep.options[i] = monOption;
    	}
     
    }
    ici, listeDep est une variable dont la valeur est l'argument passé dans l'appel de la fonction, donc sa valeur avec la rectification précédente est "Dannee",
    mais ensuite, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeDep.options[i] = monOption;
    mais listeDep est de type chaîne et n'a pas de propriété options ! C'est l'élément HTML correspondant qu'il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function ajout(listeDep){
        var annee = 2004;
    	for (var i=1 ; i <= 11 ; i++) {
    		var monOption = document.createElement('option');
    		monOption.text = annee + i;
    		monOption.value = annee + i;
    		document.getElementById(listeDep).options[i] = monOption;
    	}
     
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    merci pour vos réponse.
    l'erreur que je commettais c'est de de pas mettre le chemin complet dans le onload.
    en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="ajout(document.form1.Dannee)">
    c'est ok.
    une derniere question si je veux charger differentes listes dans le onload est que je peux faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="ajout(document.form1.Dannee)";"ajout(document.form1.Dannee2)">
    merci

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    en faite j'ai trouvé il faut tout mettre entre les guillemets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="ajout(document.form1.Dannee);ajout(document.form1.Dannee2)">
    a moins qu'il existe un autre moyen plus joli

    Merci a tous

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="ajout(document.form1.Dannee);ajout(document.form1.Dannee2)">
    est préférable, ensuite, tu peux aussi passer plusieurs arguments à ta fonction et boucler sur le nombre d'arguments :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="ajout(document.form1.Dannee,document.form1.Dannee2)">
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function ajout(){
    for(var j=0; j<arguments.length; j++){
        var annee = 2004;
    	for (var i=1 ; i <= 11 ; i++) {
    		var monOption = document.createElement('option');
    		monOption.text = annee + i;
    		monOption.value = annee + i;
    		arguments[j].options[i] = monOption;
    	}
    } 
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [STRUTS]Liste dans un formulaire
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 14
    Dernier message: 11/02/2005, 17h10
  2. [Jar][Classpath]Pb chargement resource classpath dans un jar
    Par Pill_S dans le forum Général Java
    Réponses: 20
    Dernier message: 01/10/2004, 20h12
  3. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  4. Réponses: 5
    Dernier message: 03/02/2004, 14h20
  5. [BP7] Problème chargement de ressource dans une DLL
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 26/07/2003, 21h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo