为什么我的localStorage复选框/布尔值比较不适用于我的Google Chrome扩展
Why is my localStorage checkbox/boolean value comparison not working for my Google Chrome Extension?
我已经成功地将一个布尔变量映射到我的本地存储变量,这是由我的Chrome扩展的options.html页面上的复选框触发的。
我想知道的是,根据我的popup.html(浏览器按钮事件)选项中是否选中了复选框,显示/隐藏元素的最佳方式是什么;不起作用——我也不希望它起作用……但我有点不知所措,无法控制向最终用户显示这些元素的最佳方式。
注意:display:none for 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部分的最佳方法——显示/隐藏功能。我将发布一个新问题,并通过链接更新此问题。非常感谢你的帮助,马可!
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();
}
相关文章:
- PHP中的setcookie仅适用于localhost
- 如何在angular js中使用指令.不适用于我的情况,为什么
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- jQuery Toggle不适用于本地和我的网站,但适用于jsFiddle
- Javascript适用于jsfiddle,但不适用于我的网站
- Angular js 适用于 jsfiddle 但不适用于我的机器 奇怪的错误
- 我的Javascript(用于在ul中重新排序li)在IE中不起作用
- 我的代码适用于jQuery 1.3.2,但不适用于1.6.4
- 此代码阻止我的表单提交(仅在 chrome 中,适用于 IE 和 Firefox)
- 为什么我的 scrollTop 用于检测何时滚动到页面底部不起作用
- 我的函数仅适用于 ajax 调用后的警报
- 使用适用于iOS的UIAutomation Instruments时,有没有办法在测试之间保持我的应用程序打开状态
- 尝试在内容可编辑的分区中使用document.execCommand粘贴文本.适用于Chrome,而不是IE.我使用的是
- 它适用于jsFiddle,但不是在我的浏览器(FF, Chrome)
- Jquery代码对我来说是完美的,但只适用于chrome
- 我的抓拍只适用于Firefox,任何合法代码
- 为什么这个正则表达式不能识别我的模式?(适用于flash)
- 我的javascript用于随机生成器
- 我有一个名为remove()的自定义js函数,它适用于除chrome之外的所有浏览器
- Google HTML 5 地理位置“使用我的位置”仅适用于 Firefox