【问题标题】:How to give javascript sessionStorage new name with loop如何使用循环给 javascript sessionStorage 新名称
【发布时间】:2014-03-15 13:25:51
【问题描述】:

我正在尝试制作一个按钮,它会创建一些数据并将其保存在 sessionStorage 中。我想给每个数据一个从 0 开始的键号。第一次按下按钮时,它会得到名称/键 0。如果再次按下按钮,新数据字符串/对象的名称将为 1,依此类推。问题是我不想覆盖 sessionStorage 中的现有数据,所以它应该检查 sessionStorage 中是否有字符串/对象;如果是,请给它一个新名称,如果不是,请保存它。

在我的以下代码中,cpData 是我要存储在 sessionStorage 中的数据:

    for (var index = 0; index <= window.sessionStorage.key(index); index++) {
        if (index > window.sessionStorage.key(index)) {
            window.sessionStorage.setItem(index, cpData);
            break;
        }
    };

【问题讨论】:

    标签: javascript loops key session-storage


    【解决方案1】:

    我自己发现的。如果需要这样做,这段代码应该这样做:

    for (var index = 0; index >= window.sessionStorage.key(index); index++) {
            if (window.sessionStorage.key(index) === null) {
                window.sessionStorage.setItem(index, JSON.stringify(cpData));
                break;
            } else if (index > window.sessionStorage.key(index)) {
                window.sessionStorage.setItem(index, JSON.stringify(cpData));
                break;
            }
        };
    

    这次它检查window.sessionStorage.key(index) 是否不存在。如果是这样,它将创建一个数据字符串。 break; 语句立即停止循环。现在下一次按下按钮开始循环,可以看到已经有一个数据串,然后继续循环,直到index值大于当前key最大的key值。当它大于之前保存的数据时,它将保存数据和break;循环。

    如果想自己检查,请将其添加到同一个脚本中:

    var i = 0, oJson = {}, sKey;
        for (i; sKey = window.sessionStorage.key(i); i++) {
            oJson[sKey] = window.sessionStorage.getItem(sKey);
    
        }
        console.log(oJson);
    

    这将在控制台中打印出所有 sessionStorage 数据。

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多