2017-04-26 47 views
2

我試圖隱藏影像時,頁面加載和保存任何鏈接後顯示的視頻被按下如何隱藏在JavaScript中的元素,如果localStorage的變量爲真

這是我當前的代碼

var videoplayer = document.getElementById("videoplayerlayer"); 
var links  = document.getElementsByTagName("a"); 

if(localStorage !== 'undefined') 
{ 
    console.log("localStorage exists") 

    if(localStorage["vv"] == false) 
    { 
    videoplayer.style.display = "none"; 
    localStorage["vv"] = false; 
    } 
    else 
    { 
    for(i=0; i<links.length; i++) 
    { 
     links[i].onclick = function() 
     { 
     localStorage["vv"] = true; 
     videoplayer.style.display = "block"; 
     console.log(localStorage["vv"]); 
     } 
    } 
    } 
} 
else 
{ 
    localStorage["vv"] == false; 
} 
+1

使用'localStorage.getItem( 'VV')'和'localStorage.setItem( 'VV', 「真」)' –

+0

你的邏輯是有缺陷的。您檢查您的localstorage條目是否爲「false」,然後將其設置爲false。它永遠不會成真。 – devnull69

+0

@TamilSelvanC:'']'訪問被定義爲'localStorage'。 –

回答

5

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

+1

T.J我已經在很多帖子上看到很多你真棒的直接答案,然後纔是生活救星。 謝謝你的澄清! –

0

下面的代碼可以幫助你

$get('<%= AnchorId.ClientID %>').click(function(){ 
        if(localStorage !== 'undefined'){ 
         if(localStorage == false) 
          { 
          $get('<%= videoplayerlayer.ClientID %>').hide(); 
          localStorage["vv"] = false; 
          } 
         else 
         { 
          $get('<%= videoplayerlayer.ClientID %>').show() 
          localStorage["vv"] = true; 
         } 
        } 

      });