2016-08-15 69 views
0

我想製作一個能夠輕鬆保存所有變量的代碼。通常我需要60行左右的變量。效率不高。我決定嘗試使用數組創建一個函數來嘗試保存所有變量。它似乎沒有工作。使用循環和localStorage保存所有變量[JavaScript]

我的問題是加載的變量是字符串,但我需要它們是浮動的。

var variablelist = ["numb1","numb2","numb3","numb4","numb5"]; 
var variablelength = variablelist.length; 

function save(){ 
    for (var i = 0; i < variablelength; i++){ 
    localStorage[variablelist[i]] = window[variablelist[i]]; 
    } 
} 

function load(){ 
    for (var i = 0; i < variablelength; i++){ 
    window[variablelist[i]] = localStorage[variablelist[i]]; 
    } 
} 

我已經試過

window[variablelist[i]] = localStorage[parseFloat(variablelist[i])]; 

沒有奏效。它仍然是一個字符串。有任何想法嗎 ?

+0

的localStorage存儲的一切作爲一個字符串,你應該嘗試'parseFloat(localStorage.getItem(的variablelist [1]));' – HiDeo

回答

0

使用localStore.setItem()localStore.getItem()來存儲和加載項目。同時使用JSON.stringify()JSON.parse()將對象轉換爲文本,然後將它們還原回對象。

var variablelist = ["numb1","numb2","numb3","numb4","numb5"]; 
var variablelength = variablelist.length; 

function save(){ 
    for (var i = 0; i < variablelength; i++){ 
    localStorage.setItem(variablelist[i], JSON.stringify(window[variablelist[i]])); 
    } 
} 

function load(){ 
    for (var i = 0; i < variablelength; i++){ 
    window[variablelist[i]] = JSON.parse(localStorage.getItem(variablelist[i])); 
    } 
} 
+0

謝謝你的幫助。我學習了一種新的數據轉換方法JSON.parse等。 – killereks

+0

不客氣:) –

1

首先,它讓我感到很傷心,因爲看到如此多的東西存儲在窗口對象上。你應該真的重新思考!

LocalStorage是一種將鍵值對存儲到瀏覽器內存以供稍後訪問的方式。唯一的問題是該值必須是一個字符串。

可以解決這個問題我使用JSON.stringifyJSON.parse功能:

var objectToSave = { 
    key1: 'something', 
    key2: 'something else' 
}; 

localStorage.setItem('myObject', JSON.stringify(objectToSave)); 

console.log(localStorage.getItem('myObject')); // What is stored 
console.log(JSON.parse(localStorage.getItem('myObject'))); // The parsed object 

否則,如果您在保存所有單個變量的設置,你已經爲時不遠了,你只需要使用getItemsetItem

var variablelist = ["numb1","numb2","numb3","numb4","numb5"]; 
var variablelength = variablelist.length; 

function save(){ 
    for (var i = 0; i < variablelength; i++){ 
    localStorage.setItem(variablelist[i], window[variablelist[i]]); 
    } 
} 

function load(){ 
    for (var i = 0; i < variablelength; i++){ 
    window[variablelist[i]] = localStorage.getItem(variablelist[i]); 
    } 
} 
+0

感謝您的幫助,我忘了getItem和setItem命令。我還在學習。我發現這兩個答案都很有用。再次感謝您 – killereks

+0

@killereks沒問題,高興地幫助:) –