2014-05-12 71 views
0

我一直在試圖找到一個答案,這一整個上午,似乎無法得到正確的。用localStorage保存一個單車號碼

想法是當用戶單擊按鈕時顯示不同的數組項。問題是,一旦他們進入不同的頁面,數組將重置爲0並重新開始。我希望它記住它在數組中的位置,並且即使用戶轉到其他頁面也能夠繼續。

這是我到目前爲止,但它會打破,如果我在切換到不同的頁面之前點擊按鈕。

function iAmCarousel() { 
    var describe = document.getElementById("describe"); 
    var describeArray = []; 
     describeArray[0] = "Front End Web Developer"; 
     describeArray[1] = "Responsive Design nut"; 
     describeArray[2] = "Photoshop nerd"; 
     describeArray[3] = "soon to be husband"; 
    var refreshButton = document.getElementById("refresh"); 
    var index = localStorage.getItem("Index"); 

    describe.innerText = describeArray[index]; 

    refreshButton.onclick = function() { 
     while(index < describeArray.length) { 
      index++; 
      localStorage.setItem("Index", index); 
      if(index == describeArray.length) { 
       index = 0; 
      } 
      describe.innerText = describeArray[index]; 
      break; 
     } 
    } 
} 
iAmCarousel(); 

回答

0

因爲「指數」不會在localStorage進行設置,並呼籲一個不存在的鍵返回nullgetIndex()。你留下describeArray[null],這將無法正常工作(並會給你undefined)。

var index = localStorage.getItem("Index"); 

if (index === null) { 
    index = 0; 
} 

describe.innerText = describeArray[index]; 

...或者你可以做var index = localStorage.getItem("Index") || 0;(通過short circuit evaluation

+0

if語句的伎倆。我嘗試了短路評估,但它做了同樣的事情。謝謝你,先生。 – Kendall