2014-10-20 64 views
0

我正在尋找一種通過列表更改網頁而無需兩次獲取相同頁面的方法。我嘗試了洗牌清單,但是當一個新的頁面被加載時,它只是重新加載腳本。所以我想我需要使用某種cookie。不過,我對JavaScript很陌生。誰能幫幫我嗎?使用cookies通過math.random更改網頁

我在想這樣的事情,只是用某種餅乾:由於往返

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''sang22.html','sang23.html','sang24.html','sang25.html','sang26.html','sang27.html','sang28.html','sang29.html','sang30.html','sang31.html','sang32.html''sang33.html','sang34.html','sang35.html']; 
var page = Math.floor((Math.random() * pages.length) + 1); 
window.location.href = pages[page]; 
pages.splice(page); 
+1

我認爲使用cookies是一個好主意。請閱讀如何設置或檢索它們http://www.w3schools.com/js/js_cookies.asp – 2014-10-20 08:45:58

+0

查看LocalStorage API。 – Cohars 2014-10-20 08:50:02

回答

0
var page = pages[Math.floor(Math.random() * pages.length)] 
window.location.href = pages[page] 
+0

但這不會刪除任何其他頁面。它只是直接鏈接到一個 – 2014-10-20 09:01:27

0

這裏使用的localStorage鹼性溶液如餅乾不會是一個好主意

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 = []; 
} 
var unVisitedPages = difference(visitedPages, pages); 
if(unVisitedPages.length === 0){//All pages visited at once 
    //add your logic when all page visited 
} 
else{ 
    page = unVisitedPages[Math.floor(Math.random() * unVisitedPages.length)]; 
    localStorage.setItem("visitedPages", JSON.stringify(visitedPages.push(page))); 
    window.location.href = page; //append if you want to kill cache"?ck="+new Date().getTime() 
} 

function difference(a,b){//b -a 
    var c = []; 
    for(var i=0; i< b.length; i++){ 
     if(a.indexOf(b[i]) === -1){ 
      c.push(b[i]); 
     } 
    } 
    return c; 
} 
+0

這似乎是腳本有問題。因爲當它被添加時,它總是加載sang1,然後轉到sang2,但它不會從那裏開始。我不能真正解決這個問題。任何幫助? – 2014-10-20 10:27:42

+0

嘿,你可以嘗試使用最直接和最優化的最新解決方案。 – Amitesh 2014-10-21 04:25:55