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 :

Syntaxe correcte pour un Push de données vers une fonction


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 17
    Points
    17
    Par défaut Syntaxe correcte pour un Push de données vers une fonction
    Bonjour, (Et bonne année, c'est pas trop tard)

    J'ai une fonction associée à jQuery qui spécifie une liste de photos à afficher:
    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
     
    <script type="text/javascript">
    $( function() {
    	$.vegas( 'slideshow', {
    		delay: 8000,
    		backgrounds: [
    			{ src: 'bg_images/background_1.jpg', fade: 4000 },
    			{ src: 'bg_images/background_2.jpg', fade: 4000 },
    			...etc...
    			{ src: 'bg_images/background_45.jpg', fade: 4000 },
    			{ src: 'bg_images/background_46.jpg', fade: 4000 }
    		]
    	} )
    	('overlay', {
        src:'overlays/10.png'
      });
     
    	$( '.documentation' ).click( function() {
    		$( 'ul ul' ).slideToggle();
    		return false;
    	});
     
    	etc...
     
    	} );
    </script>
    Jusque là tout va bien, cela fonctionne très bien.
    Seulement, ce que je désire faire est de n'utiliser que quelques images de la liste complète et cela de façon aléatoire.

    Pour ça, j'ai écrit le code suivant:
    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
    49
    50
     
    <script type="text/javascript">
    <!-- DÉBUT FONCTION RANDOM -->
    var max_pics=46; <!-- TOTAL IMAGES -->
    var max_selected_pics=10; <!-- NOMBRE IMAGES A SELECTIONNER -->
     
    var randomNumber=0;
    var bg_pic_id=new Array(max_selected_pics);
    var bg_pic=new Array(max_selected_pics);
    var picture_found=false;
    var duplicate_found=false;
    var my_pics_list=[];
     
    for (var i=1;i<=max_selected_pics;i++){
    	picture_found=false;
    	while (picture_found==false){
     
    		randomNumber = Math.floor(Math.random() * max_pics) + 1;
    		if (i>1){
    			duplicate_found=false;
    			for (var u=1;u<i;u++){
    				 if (bg_pic_id[u]==randomNumber){
    					duplicate_found=true;
    					break;
    				 }
    			}
    			if (duplicate_found==false){
    				picture_found=true;
    			}
    		}
    		else{
    			picture_found=true;
    		}
    	  }
    	bg_pic_id[i]=randomNumber;
    	bg_pic[i]="bg_images/background_" + bg_pic_id[i] + ".jpg";
    	my_pics_list.push([bg_pic[i]]);
    }
    <!-- FIN FONCTION RANDOM -->
     
     
    $( function() {
     
    	$.vegas('slideshow',backgrounds:{my_pics_list,delay:8000,fade:4000}),('overlay', {src:'overlays/10.png'});
    	$( '.documentation' ).click( function() {
    		$( 'ul ul' ).slideToggle();
    		return false;
    	});
     
    	<!-- ...ETC... -->
    Pour la partie random il n'y a pas de problème, j'ai écrit ça en 10 minu!tes.
    Je n'arrive par contre pas à le faire fonctionner.
    Cela doit être la syntaxe du push qui pose problème. (Je suis assez paumé en la matière)

    Quelqu'un aurait-il la gentillesse de m'aiguiller sur la bonne voie ? (car maintenant ça fait des heures que ça me rend dingue)

    Un tout grand merci d'avance.

    Gino

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 073
    Points : 44 665
    Points
    44 665
    Par défaut
    Bonsoir,
    ce que je trouve bizarre c'est que d'un coté tu as une variable backgrounds qui est un Array d'objet et de l'autre un objet contenant un Array, mais qui plus est mal initialisé.

    Reprends la syntaxe.

  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 : 54
    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
    De toute façon, les commentaires HTML dans du JavaScript, ça provoque des erreurs ! Le script ne sera donc pas exécuté !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Bovino Voir le message
    De toute façon, les commentaires HTML dans du JavaScript, ça provoque des erreurs ! Le script ne sera donc pas exécuté !
    Je sais bien, j'ai mis cela ici pour un peu commenter le code que j'ai écrit, rien de plus.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 073
    Points : 44 665
    Points
    44 665
    Par défaut
    C'est pas mal non plus de faire partager la solution....I wait

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    C'est pas mal non plus de faire partager la solution....I wait
    C'est exactement comme ça que je procède habituellement après avoir reçu de l'aide.
    Mais sans déconner, alors que je demande de l'aide pour revoir ma syntaxe quand je suis coincé on me réponds "revois ta syntaxe", merci pour l'aide !
    Et je ne parle pas de la réponse qui critique le fait d'avoir mis des commentaires dans le code de mon post comme si j'étais un débile complet.

    Enfin ! Donc, pour la solution, j'ai suivi tes conseils: j'ai revu la syntaxe !

    Plus sérieusement, j'ai commencé par réécrire le code js dans un fichier externe car cela me gonflait qu'il soit intégré au code html.
    J'ai ensuite créé un second code qui met en tableau les diverses photos qui est appelé depuis le html à l'aide de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="js/ini_data_pic.js"></script>
    et qui renvoie le tableau à l'aide de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write(send_data);
    Voilà, cela fonctionne nickel.
    Grand merci pour votre aide.

    Gino

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 073
    Points : 44 665
    Points
    44 665
    Par défaut
    Loin de moi l'envie de polémiquer mais je pense qu'il faut être conscient que les intervenants sur les forums sont bénévoles et prennent sur leur temps pour répondre à des demandes parfois très loin d'être clairement énoncées.
    ...on me réponds "revois ta syntaxe",...
    c'est un peu réducteur et faire fi de
    ce que je trouve bizarre c'est que d'un coté tu as une variable backgrounds qui est un Array d'objet et de l'autre un objet contenant un Array, mais qui plus est mal initialisé.
    Et je ne parle pas de la réponse qui critique le fait d'avoir mis des commentaires dans le code de mon post comme si j'étais un débile complet.
    Certaines réponses peuvent paraître "stupides" mais comme l'a dit Amstrong, pas celui qui a marché sur la lune, l'autre, à trop avoir la tête dans le guidon on ne voit pas le trou dans la route. Tu ne peux pas t'imaginer le nombre de soucis qui sont liés à ce genre de bévues, mais pour s'en rendre compte il faut plus donner que prendre.

    C'est pas mal non plus de faire partager la solution....
    C'est ce qui nous permet de pouvoir répondre parfois à des questions aux solutions improbables.

    Je te rassures je ne finirais pas par te dire tout le bien que l'on pense de document.write.


    Au fait on peut pusher des objets de toute sorte par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_tableau.push({'src':'image.jpg', 'fade':4000});
    Voila bonne continuation quand même et tu seras toujours le bienvenu sur le Forum.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    @ NoSmoking

    De mon côté, loin de moi l'idée de critiquer.
    Juste que quand tu regardes le code que je dis avoir écrit, il semblerait que je ne sois pas un grand pro du js, mais pas vraiment un débutant non plus.
    Donc à ce stade, on se rend bien compte que la remarque sur les commentaires est inutile, voire moqueuse et que les arrays c'est pas vraiment mon truc et que même si ta suggestion te semblait compréhensible, à moi pas.
    Ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_tableau.push({'src':'image.jpg', 'fade':4000});
    me parle beaucoup plus que
    ce que je trouve bizarre c'est que d'un coté tu as une variable backgrounds qui est un Array d'objet et de l'autre un objet contenant un Array, mais qui plus est mal initialisé.
    De plus, je sais que ce que vous faites est bénévole et vous prends du temps, d'où le fait que j'ai essayé de mettre mon code directement, de le commenter afin d'être assez clair et d'avoir tenté d'expliquer aussi clairement que possible où je coincais.
    Mais alors, c'était pas la peine de perdre son temps à mettre des réponses qui ne m'aident pas et aurait été plus judicieux de ne pas me répondre.

    Enfin, pour terminer, je n'aime pas trop document.write moi non plus, mais pour l'instant c'est la seule solution que j'ai trouvé, pas parfaite mais cela fonctionne, et même très bien, donc...

    Allez, encore merci et je vais tenter d'expoiter ton exemple du push, à mon aise car à présent, ça tourne et ça c'était pour moi le principal.

    @+

    Gino

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par bk313142 Voir le message
    C’est exactement comme ça que je procède habituellement après avoir reçu de l’aide.
    Mais sans déconner, alors que je demande de l’aide pour revoir ma syntaxe quand je suis coincé, on me répond, «*revois ta syntaxe*», merci pour l’aide*!
    Et je ne parle pas de la réponse qui critique le fait d’avoir mis des commentaires dans le code de mon post comme si j’étais un débile complet.
    Je ne vais pas te répondre directement, mais simplement réagir pour tout le monde.

    Il est très simple de mettre des commentaires JavaScript et non HTML dans un source JavaScript. Donc lorsque nous voyons une erreur aussi grossière, nous, bénévole, en faisons la remarque. Non pas qu’on pense que l’auteur est un débile complet.
    Mais simplement parce que nous voyons passer ici des milliers d’intervenants dont certains sont des experts du JavaScript et d’autres n’ont aucune idée de ce qu’est l’écriture d’une ligne de code.

    En voyant un tel post deux solutions s’offrent à nous. Ne rien dire sur ce «*détail*». Et nous concentrer sur le fond. Et à 80*% avoir un fil de discussion interminable parce tout ce que l’on propose ne peut pas marcher en raison de ce «*détail*» grossier.
    Ou relever le point et nous assurer qu’on part sur de bonnes bases.

    Je pense que si tu avais simplement mis un commentaire HTML dans du JavaScript par étourderie (les meilleurs en font), que nous t’avions aidé sur le problème de fond. Tout ce qu’on aurait dit n’aurait servi à rien. Car lorsqu’on fait ce genre d’étourderie on peut toujours se relire, on ne le voit pas

    Je pense que ce fil de discussion est très instructif pour nous tous.
    Nous ne portons aucun jugement sur la qualité du code qui nous est soumis et encore moins sur les personnes qui le soumettent.
    Nous essayons de comprendre le problème et d’y apporter des solutions.

    Quant au code lui-même, nous suggérons en fonction de l’état de l’art de pousser vers une amélioration de sa qualité. Et nous le considérons comme «*pourri*» lorsqu’il ne permet pas de réaliser correctement sa tâche.

    Je dis donc à tous ceux qui soumettent un problème. Mettez vous à la place de quelqu’un qui ne connait rien de vous, rien de ce que vous faite, et qui n’a pour base pour vous aider que les éléments que vous postez.

    Je peux vous dire que nous y passons du temps. Il nous arrive même de reproduire vos développements pour tester certaines solutions voire de faire des recherches pour en trouver.

    Je vous conseille avant de soumettre votre problème de chercher dans le forum
    Mais aussi dans contribuez, les FAQ et les tutos.
    Je vous conseille aussi de regarder la liste des forums JavaScript. Il y en a plusieurs.
    Mieux vous ciblez votre forum meilleur seront les réponses et plus vous aiderez les autres

    Soyez précis dans vos demandes.
    Essayez de cibler au plus près le problème.
    Fournissez le code (généré) adapté pour accompagner votre description.

    Quoi qu’il en soit, sachez que nous ne jugeons personne.

    A+JYT

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2009, 22h20
  2. [Perl/Tk] problème pour faire passer des variables vers une fonction
    Par seben dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 09/03/2009, 15h17
  3. Réponses: 5
    Dernier message: 21/07/2006, 14h52
  4. Réponses: 2
    Dernier message: 09/05/2006, 15h52
  5. Réponses: 3
    Dernier message: 31/03/2006, 08h47

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