javascript - 上一个/下一个导航代码更加高效和灵活

标签 javascript jquery

我有工作代码,可以根据可用页码和您当前所在的 URL 设置上一个 URL 和下一个 URL。

我的代码太长而且一点也不灵活。如何使其更加灵活并为生产做好准备?

http://jsfiddle.net/sunflowersh/ppDL7/5/

var currentindex = '4'; //updated based on the current index data 

var indexNum = parseInt(currentindex);
var currentURL  =      document.location.href.substring(document.location.href.lastIndexOf("/")+1, document.location.href.length);

var baseURL ="/en_US/";

var leftURL = "";
var rightURL = "";

switch(indexNum)
{
case 2: 
// if there are only index, index1, and index2

if((currentURL.indexOf("index.html")>-1)||(currentURL.indexOf("index.")>-1)){
 leftURL= baseURL + "index" + parseInt(indexNum+1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum+1) + ".html";
 } else {
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum+1) + ".html";
 }
break;
case 3:

// if on index3.html or index.html
// make the right arrow URL go back to index1.html

if((currentURL.indexOf("index3.html")>-1)||(currentURL.indexOf("index.")>-1)){
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum-2) + ".html";
 } else {
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum+1) + ".html";
 }
 break;
case 4:
if((currentURL.indexOf("index4.html")>-1)||(currentURL.indexOf("index.")>-1)){
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum-3) + ".html";
 } else {
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum+1) + ".html";
  }
 break;
 case 5:
 if((currentURL.indexOf("index5.html")>-1)||(currentURL.indexOf("index.")>-1)){
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum-3) + ".html";
 } else {
 leftURL= baseURL + "index" + parseInt(indexNum-1) + ".html";
 rightURL= baseURL + "index" + parseInt(indexNum+1) + ".html";
 }
 break;
 default:
 // if no current index, disable the link
 leftURL= baseURL + "#";
 rightURL= baseURL + "#";

 }

 var leftArrow =$(".leftArrow").find("a").attr("href",leftURL);
 var rightArrow =$(".rightArrow").find("a").attr("href",rightURL);

最佳答案

看看这个 http://jsfiddle.net/steelywing/ppDL7/6/

创建一个index.js

var baseURL = "/en_US/index";
var maxIndex = 4;
function updateNav(index) {
    if (index-1 > 0) {
        $('.leftArrow a').attr('href', baseURL + (index-1) + '.html');
    } else {
        $('.leftArrow a').hide();
    }

    if (index+1 <= maxIndex) {
        $('.rightArrow a').attr('href', baseURL + (index+1) + '.html');
    } else {
        $('.rightArrow a').hide();
    }
}

并且,在每个 index.html 中,调用 updateNav() onLoad

<script>updateNav(2); // 2 current index </script>

如果您需要解析 URL,请尝试使用 RegExp /\/index(\d+)\.html$/ ( http://jsfiddle.net/steelywing/uex5m/ )

关于javascript - 上一个/下一个导航代码更加高效和灵活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473754/

相关文章:

javascript - 如何使用 jQuery 获取复选框的值并将它们吐到不同的表单字段中

jquery - icloud.com 喜欢表单输入字段

javascript - 如何在Jquery中添加三个条件

jquery - 简单的 jquery 幻灯片放映相对位置

javascript - 具有以下条件的对象 Employee 的 ES6 符号

javascript - 是否有一种首选的方式来格式化 jQuery 链以使其更具可读性?

javascript - 在 for 循环内添加数据库检索的数据

javascript - 在 bootstrap 3 modal - Rails 5 中创建一个模式以从 Navbar 添加新用户

javascript - EasySlider1.7 - 如何让第二个 slider 上的箭头起作用?

JavaScript - 当用户确认离开页面时运行代码