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

jQuery Discussion :

Y a-t-il moyen de simplifier mes appels avec une boucle for ?


Sujet :

jQuery

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 26
    Points
    26
    Par défaut Y a-t-il moyen de simplifier mes appels avec une boucle for ?
    Bonjour,

    j'ai une commande que j'appelle 16 fois est qu'il y la possibilité comme en php
    de faire commande for ???

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    $('#colorpickerHolder2').ColorPicker({
     
    			flat: true,
     
    			color: $('#HiddenColor2').val(),
     
    			onSubmit: function(hsb, hex, rgb, el) {
     
    				$('#colorSelector2 div').css('backgroundColor', '#' + hex);
     
    				$('#HiddenColor2').val(hex);
     
    				$('#colorpickerHolder2').stop().animate({height: widt ? 0 : 173}, 500);
     
    				widt = !widt;				
     
    			}
     
    		});
     
     
    ....
     
     
     
    $('#colorpickerHolder17').ColorPicker({
     
    			flat: true,
     
    			color: $('#HiddenColor17').val(),
     
    			onSubmit: function(hsb, hex, rgb, el) {
     
    				$('#colorSelector17 div').css('backgroundColor', '#' + hex);
     
    				$('#HiddenColor17').val(hex);
     
    				$('#colorpickerHolder17').stop().animate({height: widt ? 0 : 173}, 500);
     
    				widt = !widt;
     
    			}
     
    		});

    Et cette même commande est appeler cette 5 fois avec des noms différent

    les nom sont prive , promo , flash , dest , coutant

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    $('#colorpickerHolder2prive').ColorPicker({
     
    			flat: true,
     
    			color: $('#HiddenColor2prive').val(),
     
    			onSubmit: function(hsb, hex, rgb, el) {
     
    				$('#colorSelector2prive div').css('backgroundColor', '#' + hex);
     
    				$('#HiddenColor2prive').val(hex);
     
    				$('#colorpickerHolder2prive').stop().animate({height: widt ? 0 : 173}, 500);
     
    				widt = !widt;				
     
    			}
     
    		});
     
    ...
     
    $('#colorpickerHolder17prive').ColorPicker({
     
    			flat: true,
     
    			color: $('#HiddenColor17prive').val(),
     
    			onSubmit: function(hsb, hex, rgb, el) {
     
    				$('#colorSelector17prive div').css('backgroundColor', '#' + hex);
     
    				$('#HiddenColor17prive').val(hex);
     
    				$('#colorpickerHolder17prive').stop().animate({height: widt ? 0 : 173}, 500);
     
    				widt = !widt;
     
    			}
     
    		});
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 26
    Points
    26
    Par défaut
    J'ai trouver une solution mais je pense que l'on peut l'optimiser ??
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    function refresh(name){
    		function nombre(nb){
    		$('#colorpickerHolder'+nb+name).ColorPicker({
     
    			flat: true,
     
    			color: $('#HiddenColor'+nb+name).val(),
     
    			onSubmit: function(hsb, hex, rgb, el) {
     
    				$('#colorSelector'+nb+name +' div').css('backgroundColor'+name, '#' + hex);
     
    				$('#HiddenColor'+nb+name).val(hex);
     
    				$('#colorpickerHolder'+nb+name).stop().animate({height: widt ? 0 : 173}, 500);
     
    				widt = !widt;
    			}
    			});
    			}
    			$(function(){
    		nombre("2");
    		nombre("3");
    		nombre("4");
    		nombre("5");
    		nombre("6");
    		nombre("7");
    		nombre("8");
    		nombre("9");
    		nombre("10");
    		nombre("11");
    		nombre("12");
    		nombre("13");
    		nombre("14");
    		nombre("15");
    		nombre("16");
    		nombre("17");});
    			}
    		$(function(){
    		refresh("");
    		refresh("prive");
    		refresh("dest");
    		refresh("promo");
    		refresh("flash");
    		refresh("coutant");
     
    	});

  3. #3
    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 : 73
    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
    Bonsoir.

    Je vous suggère d'essayer :
    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
    // 6 fois, la première vide
    var tab = ["","prive","dest","promo","flash","coutant"];
     
    // de 2 à 17
    for (var i = 2; i < 18; i++){
    	for(var j in tab){
    		$('#colorpickerHolder'+i+tab[j]).ColorPicker({
    			flat: true,
    			color: $('#HiddenColor'+i+tab[j]).val(),
    			onSubmit: function(hsb, hex, rgb, el) {
    				$('#colorSelector'+i+tab[j]' div').css('backgroundColor', '#' + hex);
    				$('#HiddenColor'+i+tab[j]).val(hex);
    				$('#colorpickerHolder'+i+tab[j]).stop().animate({height: widt ? 0 : 173}, 500);
    				widt = !widt;
    			}
    		});
    	}
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 26
    Points
    26
    Par défaut
    Ahhh merci mais il j'ai une erreur

    missing ) after argument list
    [Break on this error] $('#colorSelector'+i+tab[j]' div').css('backgroundColor', '#' + hex);\n

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 26
    Points
    26
    Par défaut
    Bon alors j'ai fait plein d'essai

    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
    var tab = ["","prive","dest","promo","flash","coutant"];
     
    // de 2 à 17
    for(var j in tab){
    for (var i = 2; i < 18; i++){
     
    		$('#colorpickerHolder'+i+tab[j]).ColorPicker({
    			flat: true,
    			color: $('#HiddenColor'+i+tab[j]).val(),
    			onSubmit: function(hsb, hex, rgb, el) {
    				$('#colorSelector'+i+tab[j]+' div').css('backgroundColor', '#' + hex);
    				$('#HiddenColor'+i+tab[j]).val(hex);
    				$('#colorpickerHolder'+i+tab[j]).stop().animate({height: widt ? 0 : 173}, 500);
    				widt = !widt;
    			}
    		});
    	}
    }

    J'ai essayer comme ca aussi

    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
    // 6 fois, la première vide
    var tab = ["","prive","dest","promo","flash","coutant"];
     
    // de 2 à 17
     
    for (var i = 2; i < 18; i++){
    	for(var j in tab){
    		$('#colorpickerHolder'+i+tab[j]).ColorPicker({
    			flat: true,
    			color: $('#HiddenColor'+i+tab[j]).val(),
    			onSubmit: function(hsb, hex, rgb, el) {
    				$('#colorSelector'+i+tab[j]+' div').css('backgroundColor', '#' + hex);
    				$('#HiddenColor'+i+tab[j]).val(hex);
    				$('#colorpickerHolder'+i+tab[j]).stop().animate({height: widt ? 0 : 173}, 500);
    				widt = !widt;
    			}
    		});
    	}
    }

    J'ai essayer
    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
    20
    21
    22
    23
    24
     
    function refresh(name){
     
    for (var i = 2; i < 18; i++){		
     
    $('#colorSelector'+i+name).bind('click', function() {
     
    			$('#colorpickerHolder'+i+name).stop().animate({height: widt ? 0 : 173}, 500);
     
    			widt = !widt;
     
    		});			
     
    }
    }		
    $(function(){
    		refresh("");
    		refresh("prive");
    		refresh("dest");
    		refresh("promo");
    		refresh("flash");
    		refresh("coutant");
     
    	});

    Mais rien ne fonctionne j'ai trouve la première erreur

    $('#colorSelector'+i+tab[j]' div').css('backgroundColor', '#' + hex);
    Il manquait un +:
    $('#colorSelector'+i+tab[j]+' div').css('backgroundColor', '#' + hex);
    Quelqu'un a une idée ??

    J'ai une deuxième fonction dans mon code qui a les même varible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $('#colorSelector17promo').bind('click', function() {
     
    			$('#colorpickerHolder17promo').stop().animate({height: widt ? 0 : 173}, 500);
     
    			widt = !widt;
     
    		});

  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 : 73
    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
    Bonsoir.

    Citation Envoyé par Mortillus Voir le message
    $('#colorSelector'+i+tab[j]+' div').css('backgroundColor', '#' + hex);\n
    Seulement un petit plus oublié, désolé. C'est ce qui arrive lorsque l'on n'a pas la possibilité de tester le code avant de le poster.

    Vous dites que cela ne fonctionne pas sans autre détail. Difficile d'aider sans code de test et sans les résultats de ces tests.

  7. #7
    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
    A noter aussi que la méthode each est applicable à un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $.each(tab, function(iterateur, valeur){
    ...
    }

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 26
    Points
    26
    Par défaut
    Comment je peux utiliser la fonction each avec mes 2 variable ???

  9. #9
    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 : 73
    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.

    [EDIT 2011-09-07]

    En relisant les messages, j'ai trouvé un autre oubli : $('#colorSelector'+i+tab[j]+'div').css('backgroundColor'+tab[j], '#' + hex);.

    J'avais pris exemple sur le code de votre message n° 1 où ce paramètre n'existe pas. Il n'apparaît que dans le code de votre message n° 2.

    Ce qui donne :
    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
    // 6 fois, la première vide
    var tab = ["","prive","dest","promo","flash","coutant"];
     
    // de 2 à 17
    for (var i = 2; i < 18; i++){
    	for(var j=0; j < tab.length, j++){
    		$('#colorpickerHolder'+i+tab[j]).ColorPicker({
    			flat: true,
    			color: $('#HiddenColor'+i+tab[j]).val(),
    			onSubmit: function(hsb, hex, rgb, el) {
    				$('#colorSelector'+i+tab[j]+'div').css('backgroundColor'+tab[j], '#' + hex);
    				$('#HiddenColor'+i+tab[j]).val(hex);
    				$('#colorpickerHolder'+i+tab[j]).stop().animate({height: widt ? 0 : 173}, 500);
    				widt = !widt;
    			}
    		});
    	}
    }

  10. #10
    Membre actif
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 150
    Points : 230
    Points
    230
    Par défaut
    Je m'excuse d'avance, je me permet de remonter ce topic car je ne comprend vraiment pas les codes précédemment postés.

    J'ai essayé d'appliquer le dernier code fourni par danielhagnoul mais s'il fait bien une boucle, cela ne permet au final de n'obtenir que le dernier colorpicker généré par la boucle.

    Je vous donne mon code :
    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
    20
    21
    22
    23
    24
    25
     
    //Function to convert hex format to a rgb color
    function rgb2hex(variable){
     rgb = variable.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
     return "#" +
      ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
      ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
      ("0" + parseInt(rgb[3],10).toString(16)).slice(-2);
    }
     
    $('#colorpickerHolder'+id).ColorPicker({
    	flat: true,
    	color: rgb2hex($('#colorSelector'+id).children().css('background-color')),
    	onSubmit: function(hsb, hex, rgb, el) {
    		$('#colorSelector'+id+' div').css('backgroundColor', '#' + hex);
    	}
    });
     
    $('#colorpickerHolder'+id+'>div').css('position', 'absolute');
     
    var widt = false;
    $('#colorSelector'+id).bind('click', function() {
    	$('#colorpickerHolder'+id).stop().animate({height: widt ? 0 : 173}, 500);
    	widt = !widt;
    });
    J'aimerai mettre une boucle autour de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#colorpickerHolder'+id).ColorPicker({
    afin de pouvoir afficher un colorpicker par zone de couleur.

    Impossible de trouver comment faire, il me génère à chaque fois seulement le dernier colorpicker appelé.

    Quelqu'un aurait-il une solution? Merci d'avance.

  11. #11
    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 : 73
    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
    Bonsoir

    Comme vous avez pu le voir ci-dessus, lorsque le code se complexifie et que l'on ne dispose pas des sources pour tester la page on introduit rapidement des erreurs.

    Pouvez-vous me donner un lien vers le plugin et un lien vers votre page de test ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/06/2012, 09h45
  2. Simplifier un programme avec une macro
    Par huître dans le forum Macro
    Réponses: 14
    Dernier message: 30/04/2012, 18h49
  3. Je souhaite appeler mes Labels depuis une boucle
    Par Harrychoco dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/01/2012, 17h05
  4. [E-03]simplifier un code par une boucle
    Par thibln dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/02/2009, 00h13
  5. Gérer mes variables après une boucle
    Par Snipy dans le forum Langage
    Réponses: 10
    Dernier message: 06/05/2008, 12h09

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