Javascript 将值保存到本地存储时出错

Javascript 将值保存到本地存储时出错,javascript,jquery,jquery-mobile,local-storage,Javascript,Jquery,Jquery Mobile,Local Storage,我正在尝试保存和读取,但当我尝试保存面板中按钮的值时,出现错误-无法设置未定义或空引用的属性“adl”。我以前从未使用过localStorage。有人能帮我找到错误吗 谢谢 乔 这是我的密码: <!DOCTYPE html> <html> <head> <title></title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquer

我正在尝试保存和读取,但当我尝试保存面板中按钮的值时,出现错误-无法设置未定义或空引用的属性“adl”。我以前从未使用过localStorage。有人能帮我找到错误吗

谢谢

这是我的密码:

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="https://code.jquery.com/jquery-2.1.3.min.js" data-semver="2.1.3" data-require="jquery"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script>
$(document).ready(function() {


    // Save settings

    $( "#myPanel" ).panel({
      beforeopen: function( event, ui ) {}
    });

    $( "#myPanel" ).on( "panelbeforeopen", function( event, ui ) {} );


    $( "#myPanel" ).panel({
      close: function( event, ui ) {}
    });

    $( "#myPanel" ).on( "panelclose", function( event, ui ) {
        //localStorage.adl = $("#checkbox-h-2a").is(":checked"); //$('#checkbox-h-2a').val();
        if (typeof(Storage) !== "undefined") {
            localStorage.adl = $("#checkbox-h-2a").is(":checked");
            console.log($("#checkbox-h-2a").is(":checked"));
        }
    });
 });
 </script>
 </head> 
 <body> 

<!-- Start of first page -->
<div data-role="page" id="home">
<div data-role="panel" id="myPanel" data-display="overlay">
    <!-- panel content goes here -->
    <fieldset data-role="controlgroup" data-type="horizontal">
    <input name="checkbox-h-2a" id="checkbox-h-2a" type="checkbox">
    <label for="checkbox-h-2a">Auto Detect Location</label>  
  </fieldset>   
</div><!-- /panel -->
<div data-role="header">
    <h1>Test</h1>
    <a href="#myPanel" data-icon="gear" class="ui-btn-right">Open Panel</a>     
</div><!-- /header -->
<div data-role="content">   
    <div data-role="main" class="ui-content">
    <p>content will go here</p>
    </div>
</div><!-- /content -->

<div data-role="footer">
    <h4>Page Footer</h4>
</div><!-- /footer -->     
</div><!-- end of first page -->
</body>
</html>

$(文档).ready(函数(){
//保存设置
$(“#myPanel”).panel({
beforeopen:函数(事件,ui){}
});
$(#myPanel”).on(“panelbeforeopen”,函数(事件,用户界面){};
$(“#myPanel”).panel({
关闭:函数(事件,ui){}
});
$(“#myPanel”)。在(“panelclose”上,函数(事件,用户界面){
//localStorage.adl=$(“#checkbox-h-2a”).is(“:checked”)/$(“#checkbox-h-2a”).val();
if(类型(存储)!=“未定义”){
localStorage.adl=$(“#checkbox-h-2a”)。是(“:checked”);
console.log($(“#checkbox-h-2a”).is(“:checked”);
}
});
});
自动检测定位
试验
内容将放在这里

页脚
您应该像这样使用localStorage的set方法:

localStorage.setItem(keyName, keyValue);

有关更多信息,请参阅。

我相信您是从文件系统而不是从任何服务器访问/运行html文件。这就是你面临问题的原因。当您从本地文件系统运行网页时,您不能保证一切都像在web服务器上一样工作

当我从文件系统访问页面时,我能够在IE-11中复制您的问题。这是(请注意快照中的url,它是本地文件系统)。我相信您在未定义localStorage的情况下也会遇到同样的错误

现在,我正在从简单http服务器访问相同的html文件(注意下面屏幕截图中的url),它工作正常。以下是localStorage未定义的示例


所以,既然您知道了问题所在,就可以从服务器上运行html页面了。有很多方法可以创建服务器,比如使用node.js、简单python服务器等。我使用了简单python服务器。希望这能解决你的问题

您需要使用并且,我不知道什么是adl,但我认为它不是一个有效的方法。@user13286
localStorage.adl=“any value”
应该可以正常工作。。。亚当,我试过你的jsfiffle.net代码,但对我来说不起作用。同样的错误。尝试了IE、Firefox和Chrome。adl只是一个关键。你在使用什么浏览器?IE 11、Firefox和Chrome。这段代码适用于任何人吗?你能详细说明一下吗?我得到一个错误-无法设置未定义或空引用的属性“adl”。如果我注释掉localStorage.adl=$(“#checkbox-h-2a”)。是(“:checked”);行console.log($(“#checkbox-h-2a”)是(“:checked”);根据复选框状态正确输出true或false。我还尝试了以下方法--var t=$(“#checkbox-h-2a”).is(“:checked”);setItem(“adl”,t);你用的是什么浏览器?试过IE 11、Firefox和Chrome。我是否需要更改本地存储的任何设置才能工作。我在管理公司file:///. 那会有所不同吗。