2016-11-03 31 views
3

我試圖使用本地存儲來存儲,使其保持即使我刷新或重新訪問該頁面的數量,但每當我刷新返回值爲0獲取/設置數值到localStorage的

我知道這可能是一個非常簡單的解決辦法,我無法弄清楚,但我非常感謝這個初學者(可能)的簡單問題的答案。

如果你想知道這是一個星級評分系統。

HTML:

<p id="r1"></p> 

的jQuery:

$(document).ready(function(){ 
    var x1; 
    x1 = +localStorage.getItem("x1"); 
    $("#r1").html("Your rating: " + x1); 

    $("#rating1 span").click(function() { 
     x1 = 5 - $(this).index(); 
     $("#r1").html("Your rating: " + x1); 
    }); 

    localStorage.setItem("x1", x1); 
}); 
+0

只是要清楚'localStorage.getItem(x1)'與'localStorage.getItem(undefined)'相同' – adeneo

+0

真的嗎?但爲什麼? – random1234

+0

因爲聲明瞭變量'x1',但沒有值,所以它是未定義的,並且您將該變量傳遞給'getItem'。你可能想引用它作爲一個字符串,而不是'+ localStorage.getItem(「x1」);' – adeneo

回答

4

第一個問題是,當您使用getItem檢索到本地存儲項目時,您沒有提供本地存儲項目的名稱,那應該是localStorage.getItem("x1")

第二個問題是您在加載頁面時調用setItem(),而不是在用戶單擊評分時調用,因此它沒有使用用戶選擇的評分。

$(document).ready(function(){ 
    var x1; 
    x1 = +localStorage.getItem("x1"); 
    $("#r1").html("Your rating: " + x1); 

    $("#rating1 span").click(function() { 
     var x1 = 5 - $(this).index(); 
     $("#r1").html("Your rating: " + x1); 
     localStorage.setItem("x1", x1); 
    }); 
}); 
+0

YESS,終於!!!謝謝你一百萬次的男人,非常感謝它! – random1234

1

這是因爲X1是不確定的。所以你實質上做的是localStorage.getItem(undefined)。這將返回空,因爲你有一個加號它轉換爲空0

+null == 0; // true 
+0

即使我更改var x1;到var x1 = 0;我得到了相同的結果 – random1234

+0

@ random1234您需要爲localStorage項目命名。 – Barmar

+0

它應該是'localStorage.getItem(「x1」)' – Barmar

0

看樣子你可能會有點困惑,在localStorage的方法是如何工作的。基本上你需要兩件事:一個鍵和一個你想分配給它的值。我會給你一個它如何工作的簡單例子。

const key = 'taco'; 
 
let value = 'sauce'; 
 

 
localStorage // {se:fkey: "c6d8756477bc8eb22494f28a5bbc3afc,1464967104", length: 1} 
 

 
// Now let's say I want to save this to local storage. This is how. 
 
localStorage.setItem(key, value); 
 

 
localStorage // {se:fkey: "c6d8756477bc8eb22494f28a5bbc3afc,1464967104", taco: "sauce", length: 2} . As you can see it is now in localStorage. 
 

 
// Now let's say we want to retrieve what we set from localStorage. 
 
localStorage.getItem(key); // 'sauce'

希望有所幫助。

2

目前您請求的關鍵undefined本地存儲的價值,因爲x1沒有價值。如果您將x1更改爲字符串,您將獲得密鑰"x1"的值(如果存在)。

所以,你的代碼將變成:

$(document).ready(function(){ 

    var x1 = localStorage.getItem("x1"); 

    $("#r1").html("Your rating: " + x1); 

    $("#rating1 span").click(function() { 
     x1 = 5 - $(this).index(); 
     $("#r1").html("Your rating: " + x1); 
     localStorage.setItem("x1", x1); 
    }); 


}); 

localStorage.setItem("x1", x1);是正確的,但在錯誤的地方,它需要單擊事件塊內。

+0

好吧,你和Barmar的回答都很有用,非常感謝你的幫助!欣賞它! – random1234

+0

你很受歡迎 –