编程语言
首页 > 编程语言> > javascript-在Blogger中导航相同标签下的下一个和上一个帖子

javascript-在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’更改为expr:href =’prevURL()’,使用我首先显示的下一个和上一个按钮的代码
和标题也一样
expr:title =’data:olderPageTitle’到expr:title =’prevTitle()’
但是没有用

您能告诉我哪里出了问题以及如何使其工作吗?

注意:我使用CDATA Tag的原因没有特别说明,只是考虑到它可能会有所帮助.即使我在Google上搜索,我也无法理解其确切用法.如果引起任何问题,请提及.

解决方法:

由于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.

也正如巴萨姆在其他答案中提到的那样.请勿将JavaScript封装在CDATA指令中,否则Blogger使用的XML解析器将完全忽略脚本块,并且不会评估任何数据标签

标签:html,blogger,javascript,jquery
来源: https://codeday.me/bug/20191012/1897667.html