确定第一个和最后两个帖子



我正在使用下面的脚本在我的博客上显示最新的 5 篇文章。如何将第一个和最后 2 个帖子包装在不同的div 容器中?目前,所有 5 个帖子都位于存储在 item 变量中的包装容器内:

<script type='text/javascript'>
function mycallback(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
for (var j = 0; j < json.feed.entry[i].link.length; j++) {
if (json.feed.entry[i].link[j].rel == 'alternate') {
var postUrl = json.feed.entry[i].link[j].href;
break;
}
}
var postTitle = json.feed.entry[i].title.$t;
var postAuthor = json.feed.entry[i].author[0].name.$t;
var postSummary = json.feed.entry[i].summary.$t;
var entryShort = postSummary.substring(0,400);
var entryEnd = entryShort.lastIndexOf(" ");
var postContent = entryShort.substring(0, entryEnd) + '...';
var postImage = json.feed.entry[i].media$thumbnail.url.replace('s72-c/','s1600/');
var item = '<div class="wrapper"><img src="' + postImage + '"/><h3><a href=' + postUrl + '>' + postTitle + '</h3></a><span>'+ postAuthor + '</span><p>' + postContent + '</p></div>';
document.write(item);
}
}
</script>
<script src="/feeds/posts/summary?orderby=published&max-results=5&alt=json-in-script&callback=mycallback"></script>

更通用的解决方案不会检查最后一个和最后一个元素检查 3 或 4,而应该基于帖子的总长度(可以是 3,也可以是 10000(。

下面的检查应该放在你的循环中。

if(i === 0 || i === 1)

始终使用===运算符,因为它是类型安全的。 还要以易于理解的方式对检查进行分组(在一个if中检查第一个和第二个,在另一个if中检查最后一个和最后一个到最后一个:

if(i === json.feed.entry.length || i === json.feed.entry.length - 1)- 此检查基于条目的长度,而不是像 3 或 4 这样的固定值。

这样,如果将显示的条目值将来会更改(例如 10(,则无需在此处调整代码。您编写的所有代码都应努力在使用它使用的代码更改时无需进行此类调整即可工作。

通过循环检查所需的元素

// to check first or fourth element
if (i == 0 || i == 3)
// to check second or fifth element
if (i == 1 || i == 4)

通过添加 HTML tage 来包装它们

<script type='text/javascript'>
function mycallback(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
for (var j = 0; j < json.feed.entry[i].link.length; j++) {
if (json.feed.entry[i].link[j].rel == 'alternate') {
var postUrl = json.feed.entry[i].link[j].href;
break;
}
}
var postTitle = json.feed.entry[i].title.$t;
var postAuthor = json.feed.entry[i].author[0].name.$t;
var postSummary = json.feed.entry[i].summary.$t;
var entryShort = postSummary.substring(0,400);
var entryEnd = entryShort.lastIndexOf(" ");
var postContent = entryShort.substring(0, entryEnd) + '...';
var postImage = json.feed.entry[i].media$thumbnail.url.replace('s72-c/','s1600/');
var item = '<div class="wrapper"><img src="' + postImage + '"/><h3><a href=' + postUrl + '>' + postTitle + '</h3></a><span>'+ postAuthor + '</span><p>' + postContent + '</p></div>';
if (i == 0 || i == 3) document.write('<div>');
document.write(item);
if (i == 1 || i == 4) document.write('</div>');
}
}
</script>
<script src="/feeds/posts/summary?orderby=published&max-results=5&alt=json-in-script&callback=mycallback"></script>

相关内容

最新更新