我尝试使用key:value
对存储在本地存储中的某些值。我希望key
是来自Math.random()
的随机值,但我的值不会被视为变量
这是小提琴
https://jsfiddle.net/ps4xs60x/27/
和代码
$(document).ready(function () {
$(document).on('click', '.btn-primary', function(){
var num = Math.random();
$('.table tbody').append('<tr class="child"><td>one</td><td><button id="'+num+'" onClick="ae(this.id); function ae(clicked_id) {var items = []; var entry = {\'num\': clicked_id}; items.push(entry);localStorage.setItem(\'entry\',JSON.stringify(items));alert(localStorage.getItem(\'entry\',JSON.stringify(items)));}" type="button" class="invite ">Invite</button></td></tr>');
});
});
如何将num
视为变量?
答案 0 :(得分:2)
因此localStorage在这些片段中的工作量不大,但请参阅下面的代码或this forked fiddle。
ae()
移出onClick
属性,并将其定义为常规JS函数。entry
数组的数字,那么你需要每次都将它解析为json(如果已设置)而不是新建阵列。 onclick
属性,而是为类名为invite
的元素添加单击处理程序,就像您对类名为btn-primary
的元素所做的那样... < / LI>
醇>
function ae(event) {
var items = JSON.parse(localStorage.getItem('entry'));
if (items == null || typeof items !== 'object') {
items = [];
}
var entry = {
'num': event.target.id
};
items.push(entry);
localStorage.setItem('entry', JSON.stringify(items));
alert(localStorage.getItem('entry'));
}
$(document).ready(function() {
$(document).on('click', '.invite', ae);
$(document).on('click', '.btn-primary', function() {
var num = Math.random();
$('.table tbody').append('<tr class="child"><td>one</td><td><button id="' + num + '"type="button" class="invite ">Invite</button></td></tr>');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table">
<tbody></tbody>
</table>
<button class="btn-primary">Add Row
</button>