2017-10-12 246 views
0

我目前分配字段的值給一個變量:HTML5 localStorage的雙引號中添加

userName = document.getElementById('userName').value; 

然後分配該變量的localStorage:

localStorage.setItem('userName', JSON.stringify(userName)); 

這裏獲取該項目:

var retrievedUserName = localStorage.getItem('userName'); 

然後嘗試輸出項目的內容到一個HTML div:

document.getElementById("response-heading-name2").innerHTML = retrievedUserName; 

...但是當我檢查的HTML,它的輸出與它周圍的雙引號括起來的:「我的名字」

有誰知道爲什麼發生這種情況,我怎麼能阻止雙引號從出現?

回答

6

這與本地存儲無關。

當您將數據結構轉換爲JSON並使用JSON.stringify時,會添加引號。

在從本地存儲中檢索到JSON後,您應該將JSON轉換回帶有JSON.parse的JavaScript數據結構。


使用JSON的一點是要確保你存儲的是一個字符串,因爲本地存儲只能存儲字符串。

由於您正在獲取輸入的值,因此您知道它將是一個字符串。所以你可以完全放棄JSON而不是JSON.stringify它首先。

+0

的確,我在閱讀第一段時意識到了這一點。尼斯。 –

-1

localStorage總是用雙引號存儲字符串數據,當您檢索相同的數據時,您將使用雙引號。所以只需使用JSON.parse來修復它。

var retrievedUserName = JSON.parse(localStorage.getItem('userName')); 
+0

Stringify走錯了路。你需要使用解析。 (就像我在五年前的回答中所說的那樣)。 – Quentin

+0

「localStorage總是使用雙引號存儲字符串數據」 - 否則不會。它會存儲你放入的字符串。如果字符串包含雙引號,那麼localStorage中的數據將會。如果他們不這樣做,它不會。 – Quentin

+0

對不起,我把它寫錯了,它的解析 – Muthu