如何改进这个sessionstorage命名系统/ for循环?

时间:2016-04-18 00:52:44

标签: javascript html5 for-loop sessionstorage

我有一个使用sessionstorage来存储商品的购物车。当用户点击"添加到购物车"时,它会存储一个新对象,其键值等于clickcount,值等于项目名称。然后我用这个for循环来读取值:

for (var i = 0; i < sessionStorage.length -1; i++) {
if( sessionStorage.getItem(i + 1) != null ) {
...
"<span class='item'>" +  sessionStorage.getItem(i + 1) + "</span>" +

这是问题所在。假设我从购物车中删除了第3项(共5项)。如果我添加另一个项目,它将被称为&#34; 6&#34;,但我的项目将是1,2,4,5,6。我的for循环将只识别项目1,2,4和5。我能认出第6项吗?通过让我的for循环检查达到50,我做了一个快速的修复,但这只是看起来很草率和资源...

1 个答案:

答案 0 :(得分:1)

从技术上讲,每个循环都可以解决您的问题;

for (var e in sessionStorage) {
    document.write(e + '=>' + sessionStorage[e]);
}

然而,无论你如何访问你的元素,使用sessionStorage这种方式是一个糟糕的设计选择。 首先,因为sessionStorage是跨同一页面中不同脚本的共享资源,所以任何其他脚本(例如,您可能使用的库)可能会向sessionStorage添加一些内容,并且您的脚本会搞乱。封装您的数据,例如使用JSON对其进行序列化,并使用一个唯一的密钥将sessionStorage置于脚本下,这将有助于您更长远。

相关问题