簡體   English   中英

為什么我的localStorage復選框/布爾值比較不能用於我的Google Chrome擴展程序?

[英]Why is my localStorage checkbox/boolean value comparison not working for my Google Chrome Extension?

我已經成功將布爾變量映射到我的本地存儲變量,該變量由我的Chrome擴展程序的options.html頁面上的復選框觸發。

我想知道的是,根據是否在我的popup.html(瀏覽器按鈕事件)的選項中選中該復選框的方式,顯示/隱藏元素的最佳方法是什么。下面的jQuery $(“#myElement”)。hide(); 不起作用-我也不希望它...但是作為一種控制向最終用戶顯示這些元素的最佳方法,我有些茫然。

注意:顯示:CSS也不是一個選項-我只是不知道實現此目的的最佳方法。

   var value = localStorage["myCheckbox"];
   alert(localStorage.getItem('store.settings.myCheckbox'));

   if (value != null)
        alert(value);//this works (true if checked, false if not checked...)

    if (!value){
        alert('hide the element'); 
        $("#myElement").hide(); //hide a div element in my popup (chrome extension button popup)
    }

我假設您正在將復選框的.checked屬性分配給localStorage["myCheckbox"] ,因此,由於localStorage變量只能是字符串 ,所以可以是"true""false" ,具體取決於復選框的州。

您的錯誤是這樣做的:

if (!value) { 
    ...
}

上面的條件永遠不會滿足 ,因為非空字符串(例如“ true”或“ false”)在JavaScript中始終為true ,因此!"string"始終為false。 因此,要檢查popup.js復選框的值,您應該執行以下操作:

var isChecked = localStorage.myCheckbox === "true";

if (!isChecked) $('#myElement').hide();
// if the checkbox is not checked hide the element

好吧,我修復了第一個問題-(它正在返回字符串,所以我需要使用===)

但是,我仍然需要找出執行第2部分的最佳方法-顯示/隱藏功能。 我將發布一個新問題,並使用鏈接對其進行更新。 非常感謝您的幫助,Marco!

   var value = localStorage["myCheckbox"];
   var isChecked = localStorage.getItem('store.settings.myCheckbox');

    if (isChecked === "false"){ 
    alert('its FALSE');
    $('#myElement').hide();
    }

    if (isChecked === "true"){
    alert('its TRUE');
    $('#myElement').show();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM