【发布时间】:2017-07-17 07:08:44
【问题描述】:
我编写了一个代码,用于导航同一标签下的下一篇和上一篇文章。
此博客中的所有帖子将始终仅在 1 个标签下。该博客用于托管日本漫画(漫画),因此章节将位于 1 个通用标签下,即章节漫画的标题。
代码是:
<style>
#button_block_container
{
text-align:center;
}
#next, #prev
{
display: inline-block;
}
</style>
<script type="text/javascript">
//<![CDATA[
var pT="<data:post.title/>";
function recentpostslist(json) {
var eU=new Array();
var eT=new Array();
var current,k=0;
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') {
break;
}
}
eU[k] = "'" + json.feed.entry[i].link[j].href + "'";//bs
eT[k] = json.feed.entry[i].title.$t;
k++;
}
for(var i=0;i<k;i++)
{
if(eT[i]==pT)
current=i;
}
nb(current,eT,eU,k);
}
function nb(c,eT,eU,k)
{
var np=c-1;
var pp=c+1;
if(c!=0)
{
if(np!=0)
{
var next="<a href="+eU[np]+"><img src='https://1.bp.blogspot.com/-vbAhPUydPwA/WWuen8w2rsI/AAAAAAAAVP4/rutiJBBKz2kYTclTUKtq6W2vBm8pi6uaACLcBGAs/s1600/if_go-next_118773.png' alt='Next Chapter' title='Next Chapter' height='48' width='48'/></a>";
document.getElementById("next").innerHTML=next;
}
if(pp!=k)
{
var prev="<a href="+eU[pp]+"><img src='https://2.bp.blogspot.com/-jHxFGDn9aj0/WWueoDAidyI/AAAAAAAAVP8/O_okyJkKiE0j621B2b6d6AmWGDL_7SczACLcBGAs/s1600/if_go-previous_118774.png' alt='Previous Chapter' title='Previous Chapter' height='48' width='48'/></a>";
document.getElementById("prev").innerHTML=prev;
}
}
}
//]]>
</script>
<b:loop values='data:post.labels' var='label'>
<script expr:src='"feeds/posts/summary/-/"+data:label.name+"?alt=json-in-script&callback=recentpostslist&max-results=999"' type='text/javascript'/>
</b:loop>
逻辑是完美的。当我将某个章节的标题放入变量 pT 并使用它作为脚本回调时,它会起作用
<script src="http://www.example.com/feeds/posts/summary/-/**LABEL NAME**?max-results=150&alt=json-in-script&callback=recentpostslist"></script>
但是当我将它放入 Blogger 模板时,我需要使用 expr:src 使其接受 data:label.name。
顺便说一下,这里是对我使用的变量的解释。eU 是一个数组,其中存储了给定标签下帖子的所有 URL。eT 是一个数组其中存储了给定标签下的所有帖子标题。pT用于存储当前浏览的章节名称。
我正在使用for 循环:
for(var i=0;i<k;i++)
{
if(eT[i]==pT)
current=i;
}
nb(current,eT,eU,k);
在这里,它通过比较eT数组中的所有帖子标题与当前if(eT[i]==pT)来找出当前帖子所在的数组索引,
将找到的索引值存储在current 中,然后我将其发送到具有当前索引的函数nb(),以及数组和最后存储的数组索引k。
np 存储下一篇文章的索引值。由于帖子是按照最近的帖子列表顺序排列的,我不得不将current-1 和 Prev post pp 设置为 current+1。
if(np!=0) 用于查找是否有下一个帖子,if(pp!=k) 用于查找是否有以前的帖子。
现在是问题部分:
当我在 Blogger HTML 模板中键入代码并保存并转到帖子时,根本没有显示帖子的内容。
仅加载页脚和顶部页眉。
发现问题出在回调脚本上:
<b:loop values='data:post.labels' var='label'>
<script expr:src='"feeds/posts/summary/-/"+data:label.name+"?alt=json-in-script&callback=recentpostslist&max-results=999"' type='text/javascript'/>
</b:loop>
请帮忙。
【问题讨论】:
标签: javascript jquery html xml blogger