localStorage
只保留字符串。 localStorage["vv"] = false;
存儲字符串"false"
,這不是虛假的。
通常我存儲JSON並解析它。這可能是矯枉過正在這裏,雖然,只是存儲"Y"
或"N"
作爲標誌,並檢查:
var videoplayer = document.getElementById("videoplayerlayer");
var links = document.getElementsByTagName("a");
if (typeof localStorage !== 'undefined')
// ^^^^^^ Note 2
{
console.log("localStorage exists")
if(localStorage["vv"] == "N")
{
videoplayer.style.display = "none";
// No need, it's already stored - localStorage["vv"] = false;
}
else
{
for(var i=0; i<links.length; i++)
// ^^^^---- Note 1
{
links[i].onclick = function()
{
localStorage["vv"] = "Y";
videoplayer.style.display = "block";
}
}
}
}
/* You don't want this, it'll throw an error, since we know `localStorage` is falsy
else
{
localStorage["vv"] == false;
}
*/
然而,沒有什麼邏輯合理設置localStorage["vv"]
到"N"
(那是一個分配有一個分支那裏已經有已經)。您需要添加一些設置,除非您想默認隱藏視頻播放器,並且只有在localStorage["vv"]
是"Y"
(或如果本地存儲無法訪問)時顯示。
例如,這個隱藏的球員,只能說明,如果該標誌爲"Y"
負載或其中一個鏈接的點擊:
var videoplayer = document.getElementById("videoplayerlayer");
var links = document.getElementsByTagName("a");
if (typeof localStorage !== "undefined") {
if (localStorage.vv !== "Y") {
videoplayer.style.display = "none";
}
for (var i = 0; i < links.length; i++)
{
links[i].onclick = function()
{
localStorage["vv"] = "Y";
videoplayer.style.display = "block";
};
}
}
注1:您的代碼是墮入The Horror of Implicit Globals(這是我貧血的小博客上的帖子)。一定要聲明你的變量。請參閱上面的"Note"
評論。
注意2:您檢查是否可以使用本地存儲是不正確的。我已將它更新爲上面可能的含義,但請參閱see here以瞭解您希望使用的更徹底的檢查。
注3:我會建議使用現代事件處理而不是設置onclick
。
使用'localStorage.getItem( 'VV')'和'localStorage.setItem( 'VV', 「真」)' –
你的邏輯是有缺陷的。您檢查您的localstorage條目是否爲「false」,然後將其設置爲false。它永遠不會成真。 – devnull69
@TamilSelvanC:'']'訪問被定義爲'localStorage'。 –