localStorage将元素添加到列表中
localStorage add element to list
我正在创建一个使用localstorage
保存json
数组数据的动态列表,遇到了问题。
在firebug中,它显示了这个错误:
SyntaxError: JSON.parse: unexpected keyword
var cli=JSON.parse(table[i]);
这是我的jquery代码:
jQuery(document).ready(function() {
var count = 0,
table = localStorage.getItem('table');
table = JSON.parse(table);
if(table == null) {
table = [];
}
jQuery('.add_rem').on('click',function(e) {
e.preventDefault();
if(jQuery(this).hasClass('remove')) {
count -= 1;
}else {
count += 1;
}
if(jQuery(this).hasClass('remove')){
if(count == 0) {
jQuery('.list li.empty').show();
localStorage.clear();
}
jQuery("#"+localStorage.getItem('id')).removeClass('remove');
jQuery('.panel2 a span').text('('+ localStorage.getItem('count') +')');
jQuery(localStorage.getItem(jQuery(this).attr('id'))).remove()
localStorage.removeItem('id');
} else {
jQuery('.list li.empty').hide();
var clipelements = JSON.stringify({
'id': jQuery(this).closest('tr').attr('id'),
'elementlink': jQuery(this).closest('tr').find('.link').attr('href'),
'photo': jQuery(this).closest('tr').find('.photo').attr('src'),
'name': jQuery(this).closest('tr').find('.name').text()
})
table.push(clipelements);
localStorage.setItem('table', JSON.stringify(clipelements));
localStorage.setItem('count', count);
for(var i in table){
var cli = JSON.parse(table[i]);
jQuery("#"+cli.id ).find(".add_rem").addClass('remove');
jQuery('#hp-content .wrapper .list').append('<li id="'+cli.id+'"><a href="'+ cli.elementlink+'"><img src="'+ cli.photo +'"/><br />'+ cli.name +'</a></li>');
}
jQuery('.panel2 a span').text('('+ localStorage.getItem('count') +')');
}
})
if(localStorage.count > 0){
jQuery('#hp-content .wrapper .list li.empty').hide();
for(var i in table){
var cli = JSON.parse(table[i]);
jQuery("#"+cli.id ).find(".add_rem").addClass('remove');
jQuery('#hp-content .wrapper .list').append('<li id="'+cli.id+'"><a href="'+ cli.elementlink+'"><img src="'+ cli.photo +'"/><br />'+ cli.name +'</a></li>');
}
if(!localStorage.getItem('count')) {
} else {
jQuery('.panel2 a span').text('('+ localStorage.getItem('count') +')');
}
}
if(!localStorage.getItem('count')) {
} else {
jQuery('.panel2 a span').text('('+ localStorage.getItem('count') +')');
}
})
这是JSON.parse:之前的字符串
"{'"id'":'"13'",'"elementlink'":'"pl/13/zadlo-sciezne/'",'"photo'":'"images/pl/brak.gif'",'"name'":'"żądło ścięźne / kk'"}"
以及在JSON.parse 之后
{"id":"13","elementlink":"pl/13/zadlo-sciezne/","photo":"images/pl/brak.gif","name":"żądło ścięźne / kk"}
我希望这个脚本将元素存储在JSON
数组中,并将它们显示在未排序的列表中,但我不知道我做错了什么。我不是jQuery程序员,所以我认为这是我最大的问题。
您调用JSON.parse
的次数太多了,特别是说:
var cli = JSON.parse(table[i]);
是错误的——它可能只是var cli = table[i]
。
实际上,您正试图通过JSON解析器将已解析的字符串传递回。
相关文章:
- 在Javascript中使用JQueryMobile向列表添加项目
- 角度 - 需要向选择下拉列表添加多个占位符
- Javascript:如何为列表添加价值并使其即时更新
- 如何为我的嵌入YouTube播放列表添加Facebook共享按钮
- 如何允许用户将播放列表添加到单个 YT 帐户
- 将值列表添加到值本身,不包括其自身的值
- 将多个英国邮政编码列表添加到谷歌地图
- 如何使用 JavaScript 将下拉列表添加到<跨度>
- 下划线模板,将列表添加到单个数组中
- 如何将地址列表添加到地图一侧
- 可以通过Javascript将选择下拉列表添加到我的winJS工具栏中吗?
- 如何将选择列表添加到自定义实体的案例表单中(注意:替换普通查找字段)
- 使用下拉列表添加/删除搜索框
- 如何使用zip.js将图像文件列表添加到zip文件中
- 如何在jQuery中向不同的下拉列表添加不同的前缀
- 如何在单击时以编程方式将网页列表添加到浏览器收藏夹中
- 单击按钮将下拉列表添加到新行
- 为每个从特定数字开始的x列表添加边框
- 在使用javascript向下拉列表添加项目并运行服务器端代码后,无效的回发或回调参数
- 选择Jplayer播放列表添加复选框