我正在创建一个脚本来显示我的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。
答案 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);