在页面跃点之间实现sessionStorage

时间:2015-09-04 06:26:56

标签: javascript jquery html

我有两个代码,一个是form.html:

<!DOCTYPE html>
<html>
<head>
    <script src="D:\frameworks\jquery-1.11.3.js"></script>
    <meta charset="ISO-8859-1">
    <title>Form</title>
    <script type="text/javascript">
        $(function(){
            $("#sub").on("click", function(){
                sessionStorage.n1 = $("#no1").val();
                sessionStorage.n2 = $("#no2").val();
                location.href = "main.html";
            });
        });
    </script>
</head>
<body>
    No1:<input type="text" id="no1">
    No2:<input type="text" id="no2">
    <br>
    <input type="button" value="Submit" id="sub"> 
</body>
</html>

另一个是main.html:

<!DOCTYPE html>
<html>
<head>
    <script src="D:\frameworks\jquery-1.11.3.js"></script>
    <meta charset="ISO-8859-1">
    <title>Main</title>
    <script type="text/javascript">
        var n1_arr = new Array();
        var n2_arr = new Array();
        $(function(){
            n1_arr.push(sessionStorage.getItem("n1"));
            n2_arr.push(sessionStorage.getItem("n2"));
            $("#a").click(function(){
                location.href = "form.html";
            });
            $("#s").click(function(){
                for(var i = 0; i < n1_arr.length; i++)
                {
                    alert(n1_arr[i] + " and " + n2_arr[i]);
                }
            });
        });
    </script>
</head>
<body>
<input type="button" value="Add" id="a">
<input type="button" value="Show" id="s">
</body>
</html>

我希望这些工作方式如下: 首先,main.html将打开,点击“添加”按钮后,form.html将在同一个浏览器标签中打开。用户将在id为no1和no2的文本框中输入两个数字。然后,用户将单击“提交”,然后再次打开main.html(再次在同一浏览器选项卡中)。用户将继续按照他的意愿继续这样做。单击“显示”按钮时,将发生用户输入的所有值的警报,这些值将成对出现。我怎样才能做到这一点?在这种情况下,只会警告最后输入的对。

2 个答案:

答案 0 :(得分:0)

您可能会覆盖现有的n1n2值。

sessionStorage存储键值对,值为字符串。执行sessionStorage.setItem('n1', 'test')时,它将覆盖现有值。

您需要做的是读取现有值(它将是一个字符串),解析它,在末尾附加新值,然后将整个对象重新插入存储。存储对象时,最好先将stringify作为JSON。

如果您需要存储数组等复杂对象,您可能会发现使用indexedDB更好。

https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API

答案 1 :(得分:0)

首先你必须在控制台上运行命令: sessionStorage.clear();

main.html中

<!DOCTYPE html>
<html>
<head>
 <script src="D:\frameworks\jquery-1.11.3.js"></script>

<meta charset="ISO-8859-1">
<title>Main</title>
<script type="text/javascript">

    var n1_arr = JSON.parse(sessionStorage.getItem("n1")) || [];
    var n2_arr = JSON.parse(sessionStorage.getItem("n2")) || [];
    $(function(){



        $("#a").click(function(){
            location.href = "form.html";
        });


        $("#s").click(function(){
            for(var i = 0; i < n1_arr.length; i++)
            {
                alert(n1_arr[i] + " and " + n2_arr[i]);
            }
        });
    });
</script>
</head>
<body>
<input type="button" value="Add" id="a"> 
<input type="button" value="Show" id="s"> 
</body>
</html>

form.html

<!DOCTYPE html>
<html>
<head>
 <script src="D:\frameworks\jquery-1.11.3.js"></script>
<meta charset="ISO-8859-1">
<title>Form</title>
<script type="text/javascript">

    $(function(){
        $("#sub").on("click", function(){

            var n1 = sessionStorage.n1 || [];
            if(n1.length > 0){
                n1 = JSON.parse(sessionStorage.n1);
            }
            n1.push($("#no1").val());
            sessionStorage.n1 = JSON.stringify(n1);

            var n2 = sessionStorage.n2 || [];
            if(n2.length > 0){
                n2 = JSON.parse(sessionStorage.n2);
            }

            n2.push($("#no2").val());
            sessionStorage.n2 = JSON.stringify(n2);

            location.href = "main.html";

        });
    });
</script>
</head>
<body>
 No1:<input type="text" id="no1">
No2:<input type="text" id="no2">
<br>
<input type="button" value="Submit" id="sub"> 
 </body>
  </html>