javascript - 在 Blogger 中的相同标签下导航下一篇和上一篇文章

标签 javascript jquery html blogger

对于初学者,我希望你阅读
Next and Prev Buttons for Blogger Theme

明白我想要什么的概念吗?那么让我们继续我的问题:

现在我有了已经嵌入到主题中的下一个和上一个按钮的代码,它们是:

<nav class='op-pagi'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><i class='fa fa-angle-left'/> Prev</a>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'> Next <i class='fa fa-angle-right'/></a>
</nav>

并使用我之前问过的问题,例如:
How to store the URL's and Titles of a list of posts under same label into a String array in Blogger 以及
How to match and point to a particular data in array in Blogger

我自己编写了一个代码:

<script>
//<![CDATA[

<b:if cond='data:blog.searchLabel'>

  var URLArray = <b:eval expr='data:posts map (post =&gt; post.url)'/>;
  var TitleArray = <b:eval expr='data:posts map (post =&gt; post.title)'/>;  

var cURL = "<data:post.url/>";
var gTitle = "<data:post.title>";
function IndexFinder(element,index) {
   return element == cURL
}
function IndexFinderT(element,index){
   return element == gTitle;
}
var sU = URLArray.findIndex(IndexFinder);
var sT = TitleArray.findIndex(IndexFinderT);

function prevURL(){
    var prevU=URLArray[sU-1];
return prevU;
}
function prevTitle(){
    var prevT=TitleArray[sT-1];
return prevT;
}
function nextURL(){
    var nextU=URLArray[sU+1];
return nextU;
}
function nextTitle(){
    var nextT=TitleArray[sT+1];
return nextT;
}

</b:if>
//]]>
</script>

现在我尝试使用我首先显示的下一个和上一个按钮的代码,方法是将 expr:href='data:olderPageUrl' to expr:href ='prevURL()'
标题也一样
expr:title='data:olderPageTitle' expr:title='prevTitle()'
但没有用。

你能告诉我哪里出了问题以及如何让它工作吗?

注意:我使用CDATA标签没有特殊原因,只是把它放在那里,认为它可能会有所帮助。即使我在谷歌上搜索,我也不明白它的具体用法。如果它引起任何问题,请提及。

最佳答案

由于 prevURL()prevTitle() 都是 JavaScript 函数,而不是 Blogger 数据标记,因此您不需要使用 expr 在属性前面。

您将需要修改函数如下 -

function prevURL(){
    var prevU=URLArray[sU-1];
    document.querySelector('.blog-pager-older-link').href = prevU;
}

function prevTitle(){
    var prevT=TitleArray[sT-1];
    document.querySelector('.blog-pager-older-link').title = prevT;
}

下一页链接也类似。无需更改页面的 HTML。

也正如另一个答案中提到的Bassam。不要将 JavaScript 包装在 CDATA 指令中,否则 Blogger 使用的 XML 解析器将完全忽略脚本 block ,并且不会评估任何数据标记

关于javascript - 在 Blogger 中的相同标签下导航下一篇和上一篇文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43211943/

相关文章:

javascript - 如何使用showModal按照 promise 完全屏蔽外部内容?

javascript - 如何使用 Chutzpah 更改底层 Phantomjs 对象设置?

javascript - D3没有在jade中渲染简单的条形图

java - 带进度条的文件上传,或从 Google Web Toolkit 访问 Html 5 File Api?

javascript - File API base 64 encoding for multiple images from html page to servlet

javascript - 三维数组上的 Dijkstra 算法

jquery - 抽象这个 jQuery 函数

jquery - 设置 JQuery UI 模式对话框叠加背景颜色

jquery - 在 jQuery 中使用 for 循环动态添加行到表中

javascript - 点击切换和替换图像