2016-01-29 89 views
0

我有一个网站,其内容类似于一本书,第一页显示在上一页的旁边。把它看作是一本书的前后页翻页。它不是浏览器中的上一页,它在页面内。就像你正在改变书中的页面基于另一个对象键/值存储对象值

我想动态分配上一页和下一页按钮的链接。目前页面位于一个对象中,pageNum和fileName作为键

我想根据当前页面链接的页码设置上一个链接。请参阅下面的示例和代码。

var toc = [ 
 
    {"pageNum": "1", "fileName": "index.html"}, 
 
    {"pageNum": "2", "fileName": "about.html"}, 
 
    {"pageNum": "3", "fileName": "work.html"}, 
 
    {"pageNum": "4", "fileName": "blog.html"}, 
 
    {"pageNum": "5", "fileName": "contact.html"}, 
 
    ]; 
 
    
 
var url = window.location.pathname; 
 
var currentPage = url.substring(url.lastIndexOf('/')+1); 
 
    
 
var prevPageNum; 
 
var prevPage; 
 
    
 
//Based on currentPage, find object entry in toc and apply related pageNum 
 
toc.filter(function(toc){ 
 
    if(toc.fileName == currentPage) { 
 
    $('#currentPageNumber').append(toc.pageNum); 
 
    } 
 
}); 
 
    
 
    /******* Last and Next Page Assignment *******/ 
 

 
toc.filter(function(toc){ 
 
    if(toc.fileName == currentPage) { 
 
    prevPageNum = toc.pageNum-1; 
 
    prevPage = toc.fileName; 
 
    
 
    $('#prevPage').append(prevPage); 
 
    //final code 
 
    //$('#prevPage').attr("href",prevPage); 
 
    } 
 
});
<a href="#" id="prevPage">Previous Page</a> 
 
<a href="#" id="nextPage">Next Page</a>

例:

当前页是about.html prevPage必须的index.html

+0

您可能希望创建另一个JS对象来控制当前页码和文件名。这会使跟踪页面变更更容易。然后你可以添加一个onclick到你的A标签来切换一切。 –

+0

我认为您的问题与您如何设置当前页面的内容以及设置下一页和上一页链接的方式有关。当设置控制按钮(prev,next)时,您需要使用正确的值而不是附加值来完全覆盖它们的值。您还应该删除对当前网址的任何调用,因为这种情况无关紧要:您不会将网页本身仅改为用户看到的内容。使用Ajax从服务器拉回内容或查看通过JavaScript拉入文件。 –

+0

此外,在这种情况下,您确实应该为链接使用onClick事件,因为您并不真正更改页面而不是href来控制内容更改。 –

回答

0

如何只定位到新的URL在点击处理器:

$('#prevPage').click(function() { 
    window.location.href = prevPage; 
}); 
+0

我也修改了上面的条目。把它看作是一本书的前后页翻页。它不是浏览器中的上一页,它在页面内。就像您正在更改书中的页面一样 – Alan

+0

因为这会更改浏览器的位置,因此会在加载新页面时卸载浏览器中的所有内容。除了用户可以知道页面已被改变,这似乎违背了OP的需求。 –

+0

@RichardBarker我同意,现在的问题似乎就是这样。在原文中没有提到类似SPA的行为。 – Schlaus

0

对我来说,看起来你想创建一个single page web application,有很多框架是值得使用的。

要回答实际问题,也许你可以加载一个页面中的所有元素,并隐藏 - 取消隐藏它们。

$(document).ready(function(){ 
 
\t $(".content").css("display","none"); 
 
\t var currentPage = 1; 
 
     $("#block" + currentPage).css("display","block"); 
 
\t $("#prev").click(function(){ 
 
\t \t $(".content").css("display","none"); 
 
\t \t currentPage--; 
 
     if(currentPage == 0) currentPage = 2; 
 
\t \t $("#block" + currentPage).css("display","block"); 
 
\t }); 
 
\t $("#next").click(function(){ 
 
\t \t $(".content").css("display","none"); 
 
\t \t currentPage++; 
 
     if(currentPage == 3) currentPage = 1; 
 
\t \t $("#block" + currentPage).css("display","block"); 
 
\t }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href = "#" id = "prev"> Previus</a> 
 
<a href = "#" id = "next"> Next</a> 
 
<div id = "block1" class = "content"> 
 
This is home page 
 
</div> 
 
<div id = "block2" class = "content"> 
 
This is about page 
 
</div>

+0

根据OP的'book'中的页面数量,在页面加载时全部加载它们是不可行的。 –

+0

@Richard这就是为什么我推荐使用框架的原因,但我会说这些都取决于这些页面的内容,并且5页不是太多。 – Andrej

+0

100多页。包括动态图表和图表在内的重页。SinglePage网站设计不是这种 – Alan

相关问题