Partage
  • Partager sur Facebook
  • Partager sur Twitter

jQuery et IE 8 : argument non valide

Sujet résolu
Anonyme
    9 septembre 2010 à 21:56:50

    Bonjour,

    j'ai fait (en local avec l'aide d'un tutoriel) un système de bandeau publicitaire comme celui de iTele, sur la télévision.

    Il marche parfaitement sur tous les navigateurs sauf IE :colere2:

    J'ai installé le plug-in debugbar et il me sort l'erreur suivante :
    Argument non valide


    voici mon code :
    (function($) {
    $.fn.iTvScroller = function(settings) {
        // Options
        var options = {
            delay: 3000
        };
        $.extend(options, settings);
            
        return this.each(function(){
            var $$ = $(this);
            var nbElements = $('dt').length;
    
            // Applique les classes au 1er et 2ème DT
            $('dt', $$)
                .eq(1).addClass('second').end()
                .eq(0).addClass('first');
    
            // Fait apparaitre doucement la première news
            $('dd', $$).eq(0).fadeIn('slow');
            
            if(nbElements > 1){
                // Appelle la méthode scrollTitles() toutes les x secondes
                setInterval(scrollTitles, options.delay);
            }
            
            function scrollTitles() {
                // Traitement des DD
                $('dd', $$)
                    // On les masque tous
                    .hide()
                    // On réaffiche celui qui nous intéresse : le suivant
                    .eq(1).fadeIn('slow');
                
                // Traitement des DT
                $('dt', $$)
                    // On réinitialise les classes de tous les titres
                    .removeClass('first')
                    .removeClass('second')
                    // On réapplique les classes au 1er, 2ème et 3ème titre
                    .eq(2).addClass('second').end()
                    .eq(1).addClass('first').end()
                    .eq(0).addClass('first')
                    // Puis on déplace les titres vers la gauche
                    .animate( {'marginLeft': '-150px'}, 1000, function(){
                        
                        // Lorsque le déplacement est termine le 1er DT ne nous intéresse plus
                        var dt = $('dt', $$).eq(0)
                            // On réinitialise la marge à gauche
                            .css('marginLeft', 0)
                            // On supprime la classe
                            .removeClass('first')
                            // On le supprime
                            .remove();
    
                        // On supprime également le DD
                        var dd = $('dd', $$).eq(0).remove();
    
                        // On repose le DT et DD à la suite des autres titres
                        $$.append( dt.hide().fadeIn('slow'), dd );
                    }
                );
            }
        });
    };
    })(jQuery);
    


    j'ai commencé le travail afin de vous aider.
    L'erreur se trouve au niveau de :
    .animate();

    j'ai relu la documentation et je ne comprends pas pourquoi. La bibliothèque jQuery est la 1.4.2.

    Je penses que le code est assez bien documenté pour comprendre le tout.

    Merci d'avance pour votre aide

    N'hésitez pas si vous avez des questions
    • Partager sur Facebook
    • Partager sur Twitter
      10 septembre 2010 à 10:19:37

      };
      })(jQuery);
      


      C'est une interrogation, mais je me demande si il ne faudrait pas mettre plutôt

      }
      })(jQuery);
      


      Mais pas sûr du tout.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        10 septembre 2010 à 18:31:31

        non ce n'est pas ça le problème toujours là
        • Partager sur Facebook
        • Partager sur Twitter
          10 septembre 2010 à 18:44:16

          Je suis pas un fin connaisseur en JQuery mais c'est normal d'appliquer une animation sur un élément du DOM que l'on vient de supprimer ?

          var dt = $('dt', $$).eq(0)
          // On réinitialise la marge à gauche
          .css('marginLeft', 0)
          // On supprime la classe
          .removeClass('first')
          // On le supprime
          .remove();

          // On supprime également le DD
          var dd = $('dd', $$).eq(0).remove();

          // On repose le DT et DD à la suite des autres titres
          $$.append( dt.hide().fadeIn('slow'), dd );
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            10 septembre 2010 à 18:54:11

            bah ça marche sur les autres navigateurs et j'ai essayé en enlevant cette partie l'erreur apparait quand même :lol:

            donc je suppose que cela ne vient pas de là :(
            • Partager sur Facebook
            • Partager sur Twitter
              10 septembre 2010 à 18:57:42

              Alors je ne sais pas.

              Enlèves du code tu verras exactement d'où ça vient.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                10 septembre 2010 à 19:00:40

                j'ai déjà fait ça cf mon premier post.

                Et j'ai découvert que le soucis venait de :
                .animate();

                quand je l'enlève j'ai plus d'erreur

                après plusieurs tests voici mes résultats :
                .animate( {height: '-=150px'}, 1000, function(){
                

                ça marche, enfin il ne m'affiche pas d'erreur

                .animate( {marginLeft: '-=150px'}, 1000, function(){
                

                il m'affiche une erreur...

                donc en gros dans le premier mon truc disparait de bas en haut mais moi je voudrais de droite à gauche comment faire ?

                EDIT :
                c'était tout con en fait...
                dans mon CSS il fallait juste que je rajoute à mes balises dt :
                margin: 0px;

                et problème résolu

                merci à tous pour votre aide
                • Partager sur Facebook
                • Partager sur Twitter

                jQuery et IE 8 : argument non valide

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown