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 :

Script pour bandeau image défilantes


Sujet :

JavaScript

  1. #1
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut Script pour bandeau image défilantes
    Bonjour à tous,

    je souhaite mettre un petit bandeau déroulant d'images... J'ai trouvé ce script que je n'arrive pas à faire fonctionner.

    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
    <div id="bandeau" style="position: relative; width: 200px; height: 200px; border: 1px solid black;
                overflow: hidden;">
            </div>
    <script>
            /*$(document).ready(function () {
     
                $('#s4').cycle({
                    fx: 'fade',
                    speed: 300,
                    timeout: 3000,
                    next: 's4',
                    pause: 1
                });
            });*/
            defilImg('bandeau', new Array("violet.jpg", "orange.jpg", "vert.jpg", "monein.jpg"));
     
            function defilImg(elName, srcs, pas, tps) {
                el = document.getElementById(elName);
                var tps = tps || 200;
                var pas = pas || 5;
                var imgs = [];
                var offset = 0;
                for (var i = 0; i < srcs.length; i++) {
                    var img = new Image();
                    img.src = "img/" + srcs[i];
                    imgs.push(img);
                    img.style.height = el.offsetHeight + "px";
                    img.style.position = "absolute";
                    img.style.left = offset + "px";
                    el.append(img);
                    offset += img.offsetWidth;
                }
                var first = 0;
                var last = imgs.length - 1;
     
                (function d() {
                    for (var i = 0, l = imgs.length; i < l; i++) {
                        var left = parseInt(imgs[i].style.left, 10);
                        imgs[i].style.left = (left - pas) + "px";
                        if (i == first && (left - pas + imgs[i].offsetWidth) < 0) {
                            imgs[i].style.left = (parseInt(imgs[last].style.left, 10) + imgs[last].offsetWidth - (i == 0 ? pas : 0)) + "px";
                            last = first++;
                            if (first > imgs.length - 1) { first = 0; }
                        }
                    }
                    setTimeout(d, tps);
                })();
            }
        </script>
    Chrome m'indique que "el.append(img);" (ligne 30) n'est pas une fonction... Si quelqu'un peut m'apporter de l'aide s'il vous plaît. Merci d'avance.

  2. #2
    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
    Erreurs multiples, mon code de test :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="initial-scale=1.0">
      <meta name="author" content="Daniel Hagnoul">
      <title>Test</title>
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/sunny/jquery-ui.min.css">
      <style>
        #bandeau {
          position: relative;
          width: 200px;
          height: 200px;
          border: 1px solid black;
          overflow: hidden;
        }
      </style>
    </head>
    <body>
     
      <div id="bandeau"></div>
     
      <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
      <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
      <script>
        "use strict";
     
        $( function(){ // forme abrégée de $(document).ready( function( ){
     
     
        });
     
        $( window ).load( function(){
     
          function defilImg(elName, srcs, pas, tps) {
            var
              el = document.getElementById(elName),
              imgs = [],
              offset = 0,
              srcsLength = srcs.length;
     
            tps = tps || 200;
            pas = pas || 5;
     
            for ( var i = 0; i < srcsLength; i++ ){
              var img = new Image();
     
              img.src = srcs[i];
              imgs.push( img );
              img.style.height = el.offsetHeight + "px";
              img.style.position = "absolute";
              img.style.left = offset + "px";
     
              $( el ).append( img );
     
              offset += img.offsetWidth;
            }
     
            var
              first = 0,
              imgsLength = imgs.length,
              last = imgsLength - 1;
     
            ( function d( ){
              for ( var i = 0, k = imgsLength; i < k; i++ ){
                var left = parseInt( imgs[i].style.left, 10 );
     
                imgs[i].style.left = ( left - pas ) + "px";
     
                if ( i == first && ( left - pas + imgs[i].offsetWidth ) < 0 ){
                  imgs[i].style.left = ( parseInt( imgs[last].style.left, 10 ) + imgs[last].offsetWidth - ( i == 0 ? pas : 0 ) ) + "px";
                  last = first++;
     
                  if ( first > imgsLength - 1 ){
                    first = 0;
                  }
                }
              }
     
              setTimeout( d, tps );
            })();
          }
     
          defilImg( "bandeau", [
            "../images/fleur1.png",
            "../images/fleur2.png",
            "../images/fleur3.png",
            "../images/fleur4.png"
          ] );
     
        });
      </script>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    el.append(img);
    ici tu utilises une méthode jQuery, or el est un "élément DOM" et non un objet jQuery, dans ce cas il te faut utiliser el.appendChild(img).

  4. #4
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut
    Super merci beaucoup NoSmoking, tu as débloqué mon problème.

    Affaire résolue. Encore merci !

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

Discussions similaires

  1. Script pour décaler image dans une zone SVG
    Par Pitus dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/05/2011, 19h13
  2. script pour bannières image ET flash.
    Par robiwan dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/11/2009, 20h38
  3. script pour déplacer image avec souris, pb avec Netscape
    Par jejerome dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/11/2006, 17h59
  4. script pour redimmensnionner image et taille maxi image
    Par fabien14 dans le forum Langage
    Réponses: 21
    Dernier message: 15/09/2006, 17h21
  5. 1 script, pour animer une image, qui en regroupe 3 scripts
    Par vampyer972 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 09/04/2006, 00h06

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