2010-06-22 10 views
0

J'utilise jGFeed pour extraire le flux RSS du serveur distant. Rien de dur, vraiment. Le problème que je rencontre concerne l'affichage du flux: j'essaie de boucler chaque élément du rss et de l'afficher. Ensuite, retirez-le et affichez le suivant.jQuery boucle infinie sur les éléments RSS

Voilà comment je suis en train de le faire, sans succès:

 $(document).ready(function() { 

     function loop(links){ 
      var i = 0; 
      var arrayLength = links.length; 

      for (i=0;i<=arrayLength;i++){ 
       $('#rssLink').empty().append(links[i]).fadeIn("slow"); 
       setTimeout(function() { 
        $('#rssLink').fadeOut("fast"); 
       }, 5000);     
      } 
     } 

     function animate(feeds){ 
      var taille = feeds.length; 
      var links = []; 
      for (var i = 0; i < taille; i++){ 
       links[i] = "<a href='"+feeds[i].link+"'>"+feeds[i].title+"</a>"; 
      } 
      loop(links); 
     } 

     $.jGFeed('http://www.wrc.com/services/newsrss.jsp', 
       function(feeds){ 
        // Check for errors 
        if(!feeds){ 
        // there was an error 
        return false; 
        } 
        animate(feeds.entries); 
       }, 50); 
    }); 

Répondre

1

Attend à moi comme vous allez aller plus au-delà de la longueur du tableau avec cette ligne:

for (i=0;i<=arrayLength;i++){ 

Vous devriez aller pendant que je < arrayLength.

De plus, votre fonction 'loop' va rapidement ajouter tous les liens les uns après les autres, effaçant l'élément #rssLink à chaque fois. Pour itérer le tableau lentement, vous pouvez essayer quelque chose comme:

function loop(links) { 
    function showLink(i) { 
     $('#rssLink').empty().append(links[i]).fadeIn("slow"); 
     setTimeout(function() { 
      $('#rssLink').fadeOut("fast", function() { 
       if(i + 1 < links.length) showLink(i + 1); 
       else showLink(0); // this line causes it to loop again from the start 
      }); 
     }, 5000); 
    } 
    showLink(0); 
    } 
+0

solution Vous fonctionne très bien, pourtant, la boucle est pas infinie ... J'ai essayé de vérifier votre code, en ajoutant console.log pour essayer avoir un avant-goût de ce qui se passe, mais rien ne semble faux ...: -/ – pixelboy

+0

@pixelboy - je pense que j'ai mal compris. pour continuer à faire une boucle sur le flux à plusieurs reprises, voir la ligne commentée ci-dessus – sje397

+0

oui, c'est ce que je suis venu avec aussi. Merci. – pixelboy