我使用jquery和来自有线的Feed编写简单的RSS feed。一切都很好,但由于某种原因,结果包括描述后的NaN。我无法弄清楚它想要拉什么,因为它没有包装在任何标签中,它遵循一个段落:
<p></p> NaN </div>
我无法使用css来隐藏它,我不想限制描述长度,因为有些比其他更长,设置任意字符限制可能允许它显示在更短的描述上。
xml Feed:http://www.wired.com/category/business/feed/
脚本:
(function ($) {
$.fn.FeedEk = function (opt) {
var def = $.extend({
FeedUrl: "http://www.wired.com/category/business/feed/",
MaxCount: 5,
ShowDesc: true,
ShowPubDate: true,
TitleLinkTarget: "_blank",
}, opt);
var id = $(this).attr("id");
var i;
$("#" + id).empty().append('<img src="loader.gif" />');
$.ajax({
url: "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=" + def.MaxCount + "&output=json&q=" + encodeURIComponent(def.FeedUrl) + "&hl=en&callback=?",
dataType: "json",
success: function (data) {
$("#" + id).empty();
var s = "";
$.each(data.responseData.feed.entries, function (e, item) {
s += '<li><div class="itemTitle"><a href="' + item.link + '" target="' + def.TitleLinkTarget + '" >' + item.title + "</a></div>";
if (def.ShowPubDate) {
i = new Date(item.publishedDate);
s += '<div class="itemDate">' + i.toLocaleDateString() + "</div>";
}
if (def.ShowDesc) {
if (def.DescCharacterLimit > 0 && item.content.length > def.DescCharacterLimit) {
var StringStartAfterImage = item.content.indexOf('>',item.content.indexOf('< img')) + 1;
s += '<div class="itemContent">' + item.content.substr(0, def.DescCharacterLimit + StringStartAfterImage) + "..";
}
else {
s += '<div class="itemContent">' + item.content;
}
s += + "</div>";
}
});
$("#" + id).append('<ul class="feedEkList">' + s + "</ul>");
}
});
};
})(jQuery);
$(document).ready(function() {
$('#home-news').FeedEk({
FeedUrl: 'http://www.wired.com/category/business/feed/',
MaxCount: 5,
ShowDesc: true,
ShowPubDate: true,
});
});
HTML:
<div class="newsCenter">
<div class="news">
<div id="home-news"> </div>
</div>
</div>
非常感谢任何帮助!谢谢!
答案 0 :(得分:0)
我通过在else语句之后删除代码并在else语句中关闭div来解决这个问题,我不需要那些没有生成的数据,所以这个解决方案适合我。