将值保存到localStorage时出错

时间:2016-03-14 15:34:43

标签: 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/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>

2 个答案:

答案 0 :(得分:0)

您应该使用localStorage的set方法,如下所示:

solver.add(str1[1] ^ str1[2] == 12) # -- or --
solver.add(str1[1] ^ str1[2] == str2[1])

有关详细信息,请参阅documentation

答案 1 :(得分:0)

我相信您正在从文件系统访问/运行html文件,而不是从任何服务器访问/运行。这就是你面临问题的原因。当您从本地文件系统运行网页时,您无法保证所有内容都像在网络服务器上一样。

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

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

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