【发布时间】:2015-10-22 09:17:04
【问题描述】:
大家好,我使用下面的脚本从另一个页面获取 html table 并将其转换为 json array,然后我将其附加到带有参数的新闻源中,但由于某种原因,事情的顺序变得混乱了2-3 个没有意义的项目...我想解决这个问题,并告诉我的脚本只附加最后 10 个项目,我该如何做到这一点?
JS:
$.get( "http://support.jonar.com/support/default.asp?W2423", function(data) {
var frag = document.createRange().createContextualFragment(data);
var tbl = (frag.querySelector('.newsfeedtable'));
document.body.appendChild(tbl);
var data = $(tbl).tableToJSON();
tbl.parentNode.removeChild(tbl);
data.reverse().sort(function(a, b) {
return a.priority < b.priority || Array.prototype.slice(-5);
}).forEach(function(d, i) {
var title = d.title;
var link = d.link;
var date = d.date;
var type = d.type;
var location = d.location;
var priority = d.priority;
if (priority == '1') {
$('ul.nflist').prepend($('<li>', {
html: '<a href="' + link + '" target="_blank">' + title + '</a> ' + ' ' + '<span class="category">' + type + '</span>'
}));
} else if (location === 'customer_and_partner_portal') {
$('ul.nflist').append($('<li>', {
html: '<a href="' + link + '" target="_blank">' + title + '</a> ' + ' ' + '<span class="category">' + type + '</span>'
}));
}
else if (location === 'customer_portal') {
$('ul.nflist').append($('<li>', {
html: '<a href="' + link + '" target="_blank">' + title + '</a> ' + ' ' + '<span class="category">' + type + '</span>'
}));
}
});
//First hide the category tag...
$(".category").hide();
// Now lets search for categories and add images
$('ul.nflist li:contains("social_media")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/socialmedia.png" />');
$('ul.nflist li:contains("blog")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/blogicon.png" />');
$('ul.nflist li:contains("announcement")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/announcementnews.png" />');
$('ul.nflist li:contains("press")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/inthepress.png" />');
$('ul.nflist li:contains("paragon")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/ParagonUpdate.png" />');
$('ul.nflist li:contains("event")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/events.png" />');
$('ul.nflist li:contains("partner")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/partnerupdate.png" />');
$('ul.nflist li:contains("wiki")').prepend('<img src="http://www.jonar.com/portal/customer/img/icons/wikiUpdate.png" />');
// Now if there is an alert please make it red!
$('ul.nflist li:contains("alert")').addClass("ALERT").prepend('<img src="http://www.jonar.com/portal/customer/img/icons/ALERT.png" />');
});
脚本效果很好,我只想在json array 中附加最后 10 个项目。我知道它的array.prototype,slice(-10),但不知道如何应用它。
这是表格的样子:
如您所见,文档有一个订单,但在下图中您看到它没有遵循... 表中倒数第二个项目位于错误的位置,并且发生在两个其他。下面是输出的图像。
【问题讨论】:
-
很难说发生了什么以及你想要完成什么
-
很简单,附加项目的顺序不正确......我的js很干净,我不知道发生了什么。查看输出图像和 html 表格,您会发现它们出现的顺序不正确@Adjit
-
您按优先级对数组进行排序,但具有相同优先级的元素的最终顺序未定义。
-
是的,但在你拥有
sort(function(a, b){}之前。 -
尝试不使用
sort():data.reverse().forEach()。请注意,您总是在元素前面加上优先级1。因此,如果有多个这样的元素,它们将再次被反转。
标签: javascript jquery html arrays json