Javascript 随机更改网页而不获取相同页面两次
我正在尝试用math.random链接35个网页。然而,我不希望它去每个网站超过一次。所以我有这个: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
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;
}