下一个/上一页的Javascript?

时间:2010-01-19 19:27:12

标签: php javascript jquery

我正在创建一系列网页的在线培训“powerpoint”。这将是非常直接的,并将页面设置为:

page1.php中 使page2.php page3.php ... page20.php

我将去旧学校并使用iframe隐藏地址栏,因为人们不应该抓住命名惯例并向前跳过。 (它不太严重,所以我想保持简单)。

我想要做的是基于他们所在的当前页面,例如page5.php创建指向page4.php和page6.html的链接。显然,无需手动编写每个页面。

如果这是一个javascript函数将是理想的,因为我不希望地址出现在浏览器信息栏中,但我也对php技巧开放。

任何想法如何做到这一点?

6 个答案:

答案 0 :(得分:1)

使用window.location。你可以把它放在这样的函数中:

<script type='javascript'>
function goto(url) { window.location=url; }
</script>
<a href='#' onclick='goto("page3.php"); return false;'>Previous</a>
<a href='#' onclick='goto("page5.php"); return false;'>Next</a>

你甚至可以使用会话变量来隐藏它,这样你可以做这样的事情(我希望我的PHP技能仍然很好):

<?php
// At Beginning of first script
start_session();
$MAX_PAGE = 20; // Set this to the highest page number
if(!isset($_SESSION['curpage'])) {
  $_SESSION['curpage'] = 1;
} else {
  // __EDIT: Added page max and mins.
  if($_GET['go'] == 'prev' && $_SESSION['curpage'] > 1) {
    $_SESSION['curpage']--;
  } else if($_GET['go'] == 'next' && $_SESSION['curpage'] < $MAX_PAGE) {
    $_SESSION['curpage']++;
  }
}
?>

然后将其放在您需要的页面中。

<?php
include("page$_SESSION[curpage].php");
if($_SESSION['curpage'] > 1) {
  echo "<a href='page.php?go=prev' rel='prev'>Previous</a>";
}
if($_SESSION['curpage'] < $MAX_PAGE) {
  echo "<a href='page.php?go=next' rel='next'>Next</a>";
}
?>

请注意,当Web Crawlers每次返回不同的页面时,它将无法做很多事情。

答案 1 :(得分:0)

var actuPage = parseInt(location.href.replace(/[^0-9]/, ''))+1;
location.href = 'page'+actuPage+'.php';

如果您的网址中没有其他号码,这应该有用。如果这样做,则必须更改replace的模式。 代码用于下一页,将+1更改为前一个-1

答案 2 :(得分:0)

对Pikrass的功能进行一点扩展,以处理第一个/最后一个场景:

function goto(url) { window.location=url; }

var curPage = parseInt(location.href.replace(/page([0-9]+)\.php/, ''))
if (curPage <= 1) {
  // First page, no 'back' link
  document.write('<a href="#" class="disabled">Back</a>');
} else {
  var backPage = curPage-1;
  document.write("<a href=\"#\" onclick=\"goto('page"+backPage+".php')\">Back</a>");
}
if (curPage >= 9) { // Replace with highest page number
  // Last page, no 'next' link
  document.write('<a href="#" class="disabled">Next</a>');
} else {
  var nextPage = curPage+1;
  document.write("<a href=\"#\" onclick=\"goto('page"+nextPage+".php')\">Back</a>");
}

如果您查看网页的来源,则不会隐藏网址,但是当按照要求将鼠标悬停在链接上时,这些网址不会显示在浏览器的状态栏中。

编辑使用Pikrass更具体的更新RegEx,以处理URL中其他位置的其他数字。谢谢Pikrass!

答案 3 :(得分:0)

这是MidnightLightning的版本,带有更好的RegExp来获取当前页面,即使您的网址中有其他数字也可以使用。

function goto(url) { window.location=url; }

var regPage = /page([0-9]+)\.php/;
var match = regPage.exec(location.href);
var curPage = parseInt(match[1]);

if (curPage <= 1) {
  // First page, no 'back' link
  document.write('<a href="#" class="disabled">Back</a>');
} else {
  var backPage = curPage-1;
  document.write("<a href=\"#\" onclick=\"goto('page"+backPage+".php')\">Back</a>");
}
if (curPage >= 9) { // Replace with highest page number
  // Last page, no 'next' link
  document.write('<a href="#" class="disabled">Next</a>');
} else {
  var nextPage = curPage+1;
  document.write("<a href=\"#\" onclick=\"goto('page"+nextPage+".php')\">Back</a>");
}

我很喜欢几个人建立答案的时候。 :)

如果可以,请按照建议选择PHP代码。它更“干净”。

答案 4 :(得分:0)

听起来您想要使用查询字符串变量,因此page.php?page=1page.php?page=2page.php?page=3等等

答案 5 :(得分:0)

为什么不使用ajax而不是iframe?

嗯,无所谓,你标记了问题jquery所以我认为你可以找到有用的另一个链接属性'告诉'js在哪里重定向。

我的意思是:

$.(document).ready(funciton(){
    //i use the live method becose.. you know, maybe in the future
    //you will go with ajax ;)
     //live method is avbaiable in jquery 1.3!
    $("a.navigation").live('click', function(){
        window.location = $(this).attr("rel");
    });
});

这使您的html标记免于onclick标记中的许多<a>个功能。

因此,您的标记将类似于:

<a href="#" rel="page1.php">Go to page 1</a>
<a href="#" rel="page2.php">Go to page 2</a>
<!-- .. and so on.. -->

或者,如果您仍想隐藏真实的网址,您可以这样做:

<a href="#" rel="1">Go to page 1</a>
<a href="#" rel="2">Go to page 2</a>
<!-- .. and so on.. -->

使用此js(可能未嵌入到页面源中?)

$.(document).ready(funciton(){
    $("a.navigation").live('click', function(){
        window.location = 'page' + $(this).attr("rel") + '.php';
    });
});

但如果您打算使用js链接,那么您永远无法完全隐藏页面网址。

你可以使用php隐藏它们,并且使用一个哈希的字符串,但我不知道它是否值得游戏。

其他建议使用正则表达式来计算页码和页面链接;我将通过PHP打印链接:将让您更好地控制全局行为(我们不知道您有多少页面,如果它们与数据库相关,即使您提供给我们的信息也会让我认为您有所有页面[x] .php都在您的服务器上fisically)