Javascript 随机更改网页而不获取相同页面两次

Javascript 随机更改网页而不获取相同页面两次,javascript,html,Javascript,Html,我正在尝试用math.random链接35个网页。然而,我不希望它去每个网站超过一次。所以我有这个: function myFunction() { var pages = ['sang1.html', 'sang2.html', 'sang3.html', 'sang4.html', 'sang5.html', 'sang6.html', 'sang7.html', 'sang8.html', 'sang9.html', 'sang10.html', 'sang11.html', 'sang1

我正在尝试用math.random链接35个网页。然而,我不希望它去每个网站超过一次。所以我有这个:

function myFunction() {
var pages = ['sang1.html', 'sang2.html', 'sang3.html', 'sang4.html', 'sang5.html', 'sang6.html', 'sang7.html', 'sang8.html', 'sang9.html', 'sang10.html', 'sang11.html', 'sang12.html', 'sang13.html', 'sang14.html', 'sang15.html', 'sang17.html', 'sang18.html', 'sang19.html', 'sang20.html', 'sang21.html'];
var page, visitedPages = JSON.parse(localStorage.getItem("visitedPages"));
if (visitedPages === null) {
    visitedPages = [];
}
if (pages.length !== visitedPages.length) {
    for (var i = 0; i < pages.length; i++) {
        page = pages[Math.floor((Math.random() * pages.length) + 1)];
        if (visitedPages.indexOf(page) === -1) { //unvisited yet
            localStorage.setItem("visitedPages", JSON.stringify(visitedPages.push(page)));
            window.location.href = page;
            break;
        }
    }
} else {window.location.href = score.html //All pages visited at once

}
}
函数myFunction(){
var pages=['sang1.html'、'sang2.html'、'sang3.html'、'sang4.html'、'sang5.html'、'sang6.html'、'sang7.html'、'sang8.html'、'sang9.html'、'sang10.html'、'sang11.html'、'sang12.html'、'sang13.html'、'sang14.html'、'sang15.html'、'sang17.html'、'sang18.html'、'sang19.html'、'20.html'、'san;
var page,visitedPages=JSON.parse(localStorage.getItem(“visitedPages”);
如果(visitedPages==null){
访问页面=[];
}
if(pages.length!==visitedPages.length){
对于(变量i=0;i
随机页面:


葛登生
Gæt sangen og hejs flagstangen!
    Hvilken sang er dette?
  • 捉鬼者

  • 闹鬼

  • 奇怪的事
  • 你要给谁打电话


所以我有一个按钮,你按下,然后它启动我的功能。这适用于我所有的网站。然而,当我按下按钮时,它总是转到第2页。仅从第1页开始。有什么不对的建议吗?

不要列出访问过的页面,而是列出所有页面的列表,在每次单击时从中随机拼接出一个页面。没有结束页的示例:

var pages = JSON.parse(localStorage.getItem("pages"));

if (pages === null) {
    pages = ['sang1.html', 'sang2.html', 'sang3.html', 'sang4.html', 'sang5.html', 'sang6.html', 'sang7.html', 'sang8.html', 'sang9.html', 'sang10.html', 'sang11.html', 'sang12.html', 'sang13.html', 'sang14.html', 'sang15.html', 'sang17.html', 'sang18.html', 'sang19.html', 'sang20.html', 'sang21.html'];   
}

function onClick () {   
    var randomIdx = Math.floor(Math.random() * pages.length),
        page = pages[randomIdx];

    pages.splice(randomIdx, 0);
    localStorage.setItem("pages", JSON.stringify(pages));

    window.location.href = page;
}    

我认为这将是一个范围问题。在
函数
之外定义
页面,已访问页面
,使
全局
。但我认为,如果您只是从数组中删除已访问的页面,这是一个更好的解决方案,如果您不想对
visitedPages
array执行任何操作,它似乎仍然不起作用,请在
window.location.href=page以检查错误。很遗憾:
TypeError:visitedPages.indexOf不是一个函数
,它还验证您的代码,因为其中有一些错误
ul
只能包含
li
元素,不能包含
br
divs
var pages = JSON.parse(localStorage.getItem("pages"));

if (pages === null) {
    pages = ['sang1.html', 'sang2.html', 'sang3.html', 'sang4.html', 'sang5.html', 'sang6.html', 'sang7.html', 'sang8.html', 'sang9.html', 'sang10.html', 'sang11.html', 'sang12.html', 'sang13.html', 'sang14.html', 'sang15.html', 'sang17.html', 'sang18.html', 'sang19.html', 'sang20.html', 'sang21.html'];   
}

function onClick () {   
    var randomIdx = Math.floor(Math.random() * pages.length),
        page = pages[randomIdx];

    pages.splice(randomIdx, 0);
    localStorage.setItem("pages", JSON.stringify(pages));

    window.location.href = page;
}