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 :

Remplir un Array recursivement


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut Remplir un Array recursivement
    Bonjour,

    Je dois gérer dans ma page des images survollées. Le problème c'est le nombre (environ 50).

    Pour ce faire j'utilise cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type="text/javascript">
    	var tb
    	tb= new Array();
    	for(i=0;i<50;i++){tb[i]=new Image;}
    	tb[0].src="Images/toto_srv.jpg";
    	tb[1].src="Images/toto.jpg";
    	tb[2].src="Images/titi_srv.jpg";
    	tb[3].src="Images/titi.jpg";
    	tb[4]... 
    	function roll(img,nb) {eval("img.src=tb["+nb+"].src");}
    </script>
    Et dans la page html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onmouseover="roll(img1,0)"; onmouseout="roll(img1,1)"><img name="img1" SRC="Images/BTA.jpg"></a>
    Etant donné que mes images ton toujours la même structure, à savoir :
    nomdelimage.jpg -> nomdelimage_srv.jpg
    Je me suis donc dit qu'il y avait surement un moyen de remplir un ligne sur deux de mon array avec le texte contenu dans la ligne précédente pour que :
    nomdelimage_srv.jpg devienne nomdelimage.jpg
    J'ai donc penser à un sytème avec modulo du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (Val in tb) 
    	tb[Val].src= (Val % 2 == 0)? fonction1:fonction2;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (Val in tb) 
    	if(Val % 2 == 0) 
    	{tb[Val].src=...}

    Une idée de comment mettre quelque chose de ce type en place ?

    Merci par avance !

  2. #2
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    est ce qu'il ne faudrait pas utiliser quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (Val in tb)
    if (Val % 2 != 0)
    {
       tb[Val].src= tab[Val-1].substring(0,tab[Val-1].length - 4) + "_srv.jpg"
    }

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Bon bah j'ai fini par trouver la solution...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript">
    	var tb
    	tb= new Array();
    	for(i=0;i<2;i++){tb[i]=new Image;}
    	tb[0].src="Images/toto.jpg";
     
    	function roll(img,nb) {eval("img.src=tb["+nb+"].src");}
    	for(Val in tb)
    		if(Val % 2 != 0){
    			tb[Val].src = tb[Val-1].src.substring(0,tb[Val-1].src.length - 4).concat("_srv.jpg");}
     
    </script>

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function roll(img,nb) {eval("img.src=tb["+nb+"].src");}
    Pourquoi eval ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function roll(img,nb) {
        img.src = tb[nb].src;
    }

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Pourquoi eval ???
    Copier-Coller...

    Merci de me l'avoir fait remarqué...

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonjour

    eval = la porte ouverte aux catastrophes par injection de codes malveillants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var tb = [],
    	dossier = "Images/",
    	term1 = "_srv.jpg",
    	term2 = ".jpg",
    	fichiers = ["toto", "titi", "tata"],
    	tbLength = 2 * fichiers.length;
     
    for(var i = 0; i < tbLength; i++){
    	tb[i] = new Image;
    }
     
    for(var i = 0, j = 0; i < tbLength; j++){
    	tb[i++].src = dossier + fichiers[j] + term1;
    	tb[i++].src = dossier + fichiers[j] + term2;
    }
     
    function roll(img,nb){
    	img.src = tb[nb].src;
    }

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

Discussions similaires

  1. [Tableaux] Remplir un array()
    Par fourniey dans le forum Langage
    Réponses: 4
    Dernier message: 11/08/2007, 16h59
  2. [MySQL] Remplir un array à partir d'une table
    Par Dauphin dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/06/2007, 07h25
  3. [MySQL] Remplir un array() avec des données issues d'une bdd
    Par fichtre! dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/12/2006, 17h03
  4. [VB.NET] Comment remplir un Array
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/11/2005, 23h49
  5. Remplir un array
    Par PrinceMaster77 dans le forum ASP
    Réponses: 11
    Dernier message: 01/04/2005, 09h23

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