Jquery / rss feed脚本用于过滤掉超过90天的所有帖子

时间:2016-01-26 22:23:42

标签: javascript jquery rss

我正在创建一个脚本来显示我的RSS提要并过滤掉旧帖子,所有这些都使用Jquery。在我的脚本中,我正在尝试过滤掉超过90天的帖子。

有1个帖子显示超过90天限制。我尝试使用不同的参数更改我的标签。

我遗失或添加的内容不应该存在?

我的Jquery代码是:

<script>
//function to load XML document    
$.ajax({
    type:       'GET',
    url:        '/ser/whatsnew_main.xml',
    dataType:   'xml',
    success:    function(xml){
        $(xml).find("item").each(function(){
        var title = $(this).find('title').text();
        var date = $(this).find('pubDate').text();
        var description = $(this).find('description').text();
        $('#feed').append('<li><strong>'+title+'</strong><br>'+date+'<br>'+description+'</li>');    

        //exp date parameters
        var today = new Date();
        var runOn = new Date(today.setDate(1));
        var expire = new Date(runOn.setDate(-90));
        var pub = new Date(date);           
            if(today.getDate() === 1 == true && pub < expire == true){          
            $(this).each('item').empty();   
            }
            else if(pub < expire == true){
                $(this).each('item').empty();
                }
                alert("on " +today.getDate()+ ", expiration date is " +expire);
        });         
        }
        });     

</script>

我尝试使用if(today.getDate() === 26 == true && pub>expire == false)的当前日期,我尝试if(today.getDate()=== 26 == true && pub<expire == false)if(today.getDate()=== 26 == true && pub<expire == true)if(today.getDate()=== 26 == true && pub>expire == true),并显示所有帖子或过去的1个帖子90天与新帖一起显示。

仅供参考,当我运行提醒时,today.getDate() = 1和当月1日一样expire = Oct 2 2015,所以不知道为什么2015年9月30日的帖子会一直显示。< / p>

更新 - 我的xml代码是(没有<xml><rss><channel>标签):

<item class="combo">
    <title>Generic Title</title>
    <pubDate>28 Oct 2015</pubDate>
    <description><![CDATA[Content <a href="/file.htm">some link</a>.]]></description>
    </item>

    <item class="class">
      <title>Gen title</title>
      <pubDate>30 Sep 2015</pubDate>      
      <description><![CDATA[Some more content <a href="/file2.htm#anchor">another link</a>.]]></description>
    </item>

我在其他RSS Feed上尝试了相同的代码,但无论是2015年9月30日还是2015年8月21日,它都是最后一个不断出现的过时帖子。

我不想创建一个全新的函数,从第一个函数调用它并创建一个全新的xml加载函数来获取pubDate。

2 个答案:

答案 0 :(得分:0)

根据你所拥有的逻辑,我不是100%清楚你要做的是什么,但如果你有兴趣做的就是从XML数据源中删除过期的元素,你应该能够做到这一点一旦你解决了一些事情,你如何拥有它,如:

if(today.getDate() === 1 && pub < expire) {          
    $(this).remove();   
} else if(pub < expire) {
    $(this).remove();
}

据我所知,似乎你用这句话弄乱了逻辑:

$(this).each('item').empty();

$(this)指的是Feed中的当前项,但是你试图询问它里面的每个“item”,然后你试图清空当前项目中的每个“item”其内容与删除项目本身相反。

这是一个JSFiddle,其项目为HTML而不是XML,但它似乎可以满足您的需求:https://jsfiddle.net/eL6s268r/1/

答案 1 :(得分:0)

好的,我看到了问题,但我认为不是有条件的,我看到你在创建runOn时将今天设置为本月的第一天,所以在代码的开头,而不是这样:

var today = new Date();
var runOn = new Date(today.setDate(1));

试试这段代码:

var today = new Date();
var runOn = new Date();
runOn.setDate(1);