2010-06-22 99 views
0

我正在使用jGFeed从远程服务器检索RSS源。 没什么难的,真的。我遇到的问题是关于feed的显示:我试图循环rss中的每个retrived元素,并显示它。然后删除它,并显示下一个。jQuery对RSS元素的无限循环

这里是如何我试图这样做,但没有成功:

 $(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); 
    }); 

回答

1

我看来像你要去一个超出数组的长度与该行:

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

你应该去,而我< arrayLength。另外,你的'循环'功能将会快速添加所有链接,每次清除#rssLink元素。慢慢地遍历数组,你可以尝试这样的:

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

您的解决方案工作得很好,但是......我已经试过检查你的代码,添加的console.log尝试有循环不是无限一个潜行的高峰,以什么事情发生,但似乎没有错......:/ – pixelboy 2010-06-22 10:24:55

+0

@ pixelboy - 我想我误解了。要继续循环反馈,请参阅 – sje397 2010-06-22 13:30:28

+0

上面的注释行,这也是我想到的。谢谢。 – pixelboy 2010-06-22 13:39:56