繁体   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