重定向到随机页面(当前页面除外)

时间:2016-10-25 01:53:13

标签: javascript redirect random

解决了! - 从switch语句更改为array ... ups后,没有更新我的随机数生成。 - 谢谢!

问题

制作一个网络漫画,并想要其中一个"随机"按钮,您可以跳到任何条带。我假设最好的方法是在后端(PHP或类似),但我想用JavaScript做。

我已经选择了一个随机页面,但问题是它有时会重定向到它已经在的页面(或者更确切地说,直到我有更多的页面)。如果当前页面与目标页面相同,我试图让页面从数组中删除,而是最终我被重定向到" http://bcitcomp.ca/students/hsloman/Comp1850/final/undefined"

我甚至确保使用splice而不是delete。不重新索引列表吗?

代码

var pickRandomPage = function () {
// random Pages available
var links = [
    "construction.html",
    "placeholder.html",
    "noplaymobil.html"];

// current Page
var currentURL = window.location.href;
var currentPage = currentURL.substr(currentURL.lastIndexOf('/')+1);

// get rid of current page from array of options
for(var i = 0; i < links.length; i++){
  if(links[i] == currentPage){
    links.splice(i,1);
  }
}

// get a random number, rounded number between 0 and number of links
var randomPage = Math.floor((Math.random() * 3) + 1);
var link = 'http://bcitcomp.ca/students/hsloman/Comp1850/final/' + links[randomPage];
// open it
window.open(link,"_self");
};

资源使用sofar

Get current URL in web browser

window.open() should open the link in same tab

2 个答案:

答案 0 :(得分:2)

  

但我最终被重定向到“http://bcitcomp.ca/students/hsloman/Comp1850/final/undefined

undefined是因为您的randomPage变量将包含13之间的数字,但links数组中的实际有效索引仅为01,因为删除当前网页网址后只有两个元素。

变化:

var randomPage = Math.floor((Math.random() * 3) + 1);

为:

var randomPage = Math.floor(Math.random() * links.length);

答案 1 :(得分:1)

将此权利放在window.open(...)行之前:

if(link === window.location+"") return pickRandomPage();

这就是说,“如果选择的链接是我们已经在的页面,请再次运行该功能”。所以它将继续尝试,直到给出新的页面。这比尝试拼接数组更容易。

有关详细信息,请参阅:recursion